#include "./xbitrev.hpp"
namespace yocto { namespace math {

	const size_t xbitrev::indx0004[   1]= {
	   3	};

	const size_t xbitrev::jndx0004[   1]= {
	   5	};

	const size_t xbitrev::indx0008[   2]= {
	   3,   7	};

	const size_t xbitrev::jndx0008[   2]= {
	   9,  13	};

	const size_t xbitrev::indx0016[   6]= {
	   3,   5,   7,  11,  15,  23	};

	const size_t xbitrev::jndx0016[   6]= {
	  17,   9,  25,  21,  29,  27	};

	const size_t xbitrev::indx0032[  12]= {
	   3,   5,   7,  11,  13,  15,  19,  23,  27,  31,  39,  47	};

	const size_t xbitrev::jndx0032[  12]= {
	  33,  17,  49,  41,  25,  57,  37,  53,  45,  61,  51,  59	};

	const size_t xbitrev::indx0064[  28]= {
	   3,   5,   7,   9,  11,  13,  15,  19,  21,  23,  27,  29,  31,  35,  39,  43,
	  45,  47,  51,  55,  59,  63,  71,  75,  79,  87,  95, 111	};

	const size_t xbitrev::jndx0064[  28]= {
	  65,  33,  97,  17,  81,  49, 113,  73,  41, 105,  89,  57, 121,  69, 101,  85,
	  53, 117,  77, 109,  93, 125,  99,  83, 115, 107, 123, 119	};

	const size_t xbitrev::indx0128[  56]= {
	   3,   5,   7,   9,  11,  13,  15,  19,  21,  23,  25,  27,  29,  31,  35,  37,
	  39,  43,  45,  47,  51,  53,  55,  59,  61,  63,  67,  71,  75,  77,  79,  83,
	  87,  91,  93,  95,  99, 103, 107, 111, 115, 119, 123, 127, 135, 139, 143, 151,
	 155, 159, 167, 175, 183, 191, 207, 223	};

	const size_t xbitrev::jndx0128[  56]= {
	 129,  65, 193,  33, 161,  97, 225, 145,  81, 209,  49, 177, 113, 241, 137,  73,
	 201, 169, 105, 233, 153,  89, 217, 185, 121, 249, 133, 197, 165, 101, 229, 149,
	 213, 181, 117, 245, 141, 205, 173, 237, 157, 221, 189, 253, 195, 163, 227, 211,
	 179, 243, 203, 235, 219, 251, 231, 247	};

	const size_t xbitrev::indx0256[ 120]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  35,
	  37,  39,  41,  43,  45,  47,  51,  53,  55,  57,  59,  61,  63,  67,  69,  71,
	  75,  77,  79,  83,  85,  87,  89,  91,  93,  95,  99, 101, 103, 107, 109, 111,
	 115, 117, 119, 123, 125, 127, 131, 135, 139, 141, 143, 147, 149, 151, 155, 157,
	 159, 163, 167, 171, 173, 175, 179, 183, 187, 189, 191, 195, 199, 203, 207, 211,
	 215, 219, 221, 223, 227, 231, 235, 239, 243, 247, 251, 255, 263, 267, 271, 275,
	 279, 283, 287, 295, 299, 303, 311, 315, 319, 327, 335, 343, 347, 351, 359, 367,
	 375, 383, 399, 407, 415, 431, 447, 479	};

	const size_t xbitrev::jndx0256[ 120]= {
	 257, 129, 385,  65, 321, 193, 449,  33, 289, 161, 417,  97, 353, 225, 481, 273,
	 145, 401,  81, 337, 209, 465, 305, 177, 433, 113, 369, 241, 497, 265, 137, 393,
	 329, 201, 457, 297, 169, 425, 105, 361, 233, 489, 281, 153, 409, 345, 217, 473,
	 313, 185, 441, 377, 249, 505, 261, 389, 325, 197, 453, 293, 165, 421, 357, 229,
	 485, 277, 405, 341, 213, 469, 309, 437, 373, 245, 501, 269, 397, 333, 461, 301,
	 429, 365, 237, 493, 285, 413, 349, 477, 317, 445, 381, 509, 387, 323, 451, 291,
	 419, 355, 483, 403, 339, 467, 435, 371, 499, 395, 459, 427, 363, 491, 411, 475,
	 443, 507, 455, 423, 487, 471, 503, 495	};

	const size_t xbitrev::indx0512[ 240]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  35,
	  37,  39,  41,  43,  45,  47,  49,  51,  53,  55,  57,  59,  61,  63,  67,  69,
	  71,  73,  75,  77,  79,  83,  85,  87,  89,  91,  93,  95,  99, 101, 103, 105,
	 107, 109, 111, 115, 117, 119, 121, 123, 125, 127, 131, 133, 135, 139, 141, 143,
	 147, 149, 151, 153, 155, 157, 159, 163, 165, 167, 171, 173, 175, 179, 181, 183,
	 185, 187, 189, 191, 195, 197, 199, 203, 205, 207, 211, 213, 215, 219, 221, 223,
	 227, 229, 231, 235, 237, 239, 243, 245, 247, 251, 253, 255, 259, 263, 267, 269,
	 271, 275, 277, 279, 283, 285, 287, 291, 295, 299, 301, 303, 307, 309, 311, 315,
	 317, 319, 323, 327, 331, 333, 335, 339, 343, 347, 349, 351, 355, 359, 363, 365,
	 367, 371, 375, 379, 381, 383, 387, 391, 395, 399, 403, 407, 411, 413, 415, 419,
	 423, 427, 431, 435, 439, 443, 445, 447, 451, 455, 459, 463, 467, 471, 475, 479,
	 483, 487, 491, 495, 499, 503, 507, 511, 519, 523, 527, 531, 535, 539, 543, 551,
	 555, 559, 563, 567, 571, 575, 583, 587, 591, 599, 603, 607, 615, 619, 623, 631,
	 635, 639, 647, 655, 663, 667, 671, 679, 687, 695, 699, 703, 711, 719, 727, 735,
	 743, 751, 759, 767, 783, 791, 799, 815, 823, 831, 847, 863, 879, 895, 927, 959	};

	const size_t xbitrev::jndx0512[ 240]= {
	 513, 257, 769, 129, 641, 385, 897,  65, 577, 321, 833, 193, 705, 449, 961, 545,
	 289, 801, 161, 673, 417, 929,  97, 609, 353, 865, 225, 737, 481, 993, 529, 273,
	 785, 145, 657, 401, 913, 593, 337, 849, 209, 721, 465, 977, 561, 305, 817, 177,
	 689, 433, 945, 625, 369, 881, 241, 753, 497,1009, 521, 265, 777, 649, 393, 905,
	 585, 329, 841, 201, 713, 457, 969, 553, 297, 809, 681, 425, 937, 617, 361, 873,
	 233, 745, 489,1001, 537, 281, 793, 665, 409, 921, 601, 345, 857, 729, 473, 985,
	 569, 313, 825, 697, 441, 953, 633, 377, 889, 761, 505,1017, 517, 773, 645, 389,
	 901, 581, 325, 837, 709, 453, 965, 549, 805, 677, 421, 933, 613, 357, 869, 741,
	 485, 997, 533, 789, 661, 405, 917, 597, 853, 725, 469, 981, 565, 821, 693, 437,
	 949, 629, 885, 757, 501,1013, 525, 781, 653, 909, 589, 845, 717, 461, 973, 557,
	 813, 685, 941, 621, 877, 749, 493,1005, 541, 797, 669, 925, 605, 861, 733, 989,
	 573, 829, 701, 957, 637, 893, 765,1021, 771, 643, 899, 579, 835, 707, 963, 803,
	 675, 931, 611, 867, 739, 995, 787, 659, 915, 851, 723, 979, 819, 691, 947, 883,
	 755,1011, 779, 907, 843, 715, 971, 811, 939, 875, 747,1003, 795, 923, 859, 987,
	 827, 955, 891,1019, 903, 839, 967, 935, 871, 999, 919, 983, 951,1015, 975,1007	};

	const size_t xbitrev::indx1024[ 496]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  33,
	  35,  37,  39,  41,  43,  45,  47,  49,  51,  53,  55,  57,  59,  61,  63,  67,
	  69,  71,  73,  75,  77,  79,  81,  83,  85,  87,  89,  91,  93,  95,  99, 101,
	 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 131, 133, 135,
	 137, 139, 141, 143, 147, 149, 151, 153, 155, 157, 159, 163, 165, 167, 169, 171,
	 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 195, 197, 199, 201, 203, 205,
	 207, 211, 213, 215, 217, 219, 221, 223, 227, 229, 231, 233, 235, 237, 239, 243,
	 245, 247, 249, 251, 253, 255, 259, 261, 263, 267, 269, 271, 275, 277, 279, 281,
	 283, 285, 287, 291, 293, 295, 297, 299, 301, 303, 307, 309, 311, 313, 315, 317,
	 319, 323, 325, 327, 331, 333, 335, 339, 341, 343, 345, 347, 349, 351, 355, 357,
	 359, 363, 365, 367, 371, 373, 375, 377, 379, 381, 383, 387, 389, 391, 395, 397,
	 399, 403, 405, 407, 411, 413, 415, 419, 421, 423, 427, 429, 431, 435, 437, 439,
	 441, 443, 445, 447, 451, 453, 455, 459, 461, 463, 467, 469, 471, 475, 477, 479,
	 483, 485, 487, 491, 493, 495, 499, 501, 503, 507, 509, 511, 515, 519, 523, 525,
	 527, 531, 533, 535, 539, 541, 543, 547, 549, 551, 555, 557, 559, 563, 565, 567,
	 571, 573, 575, 579, 583, 587, 589, 591, 595, 597, 599, 603, 605, 607, 611, 615,
	 619, 621, 623, 627, 629, 631, 635, 637, 639, 643, 647, 651, 653, 655, 659, 663,
	 667, 669, 671, 675, 679, 683, 685, 687, 691, 693, 695, 699, 701, 703, 707, 711,
	 715, 717, 719, 723, 727, 731, 733, 735, 739, 743, 747, 749, 751, 755, 759, 763,
	 765, 767, 771, 775, 779, 783, 787, 791, 795, 797, 799, 803, 807, 811, 813, 815,
	 819, 823, 827, 829, 831, 835, 839, 843, 847, 851, 855, 859, 861, 863, 867, 871,
	 875, 879, 883, 887, 891, 893, 895, 899, 903, 907, 911, 915, 919, 923, 927, 931,
	 935, 939, 943, 947, 951, 955, 957, 959, 963, 967, 971, 975, 979, 983, 987, 991,
	 995, 999,1003,1007,1011,1015,1019,1023,1031,1035,1039,1043,1047,1051,1055,1059,
	1063,1067,1071,1075,1079,1083,1087,1095,1099,1103,1107,1111,1115,1119,1127,1131,
	1135,1139,1143,1147,1151,1159,1163,1167,1175,1179,1183,1191,1195,1199,1203,1207,
	1211,1215,1223,1227,1231,1239,1243,1247,1255,1259,1263,1271,1275,1279,1287,1295,
	1303,1307,1311,1319,1323,1327,1335,1339,1343,1351,1359,1367,1371,1375,1383,1391,
	1399,1403,1407,1415,1423,1431,1439,1447,1455,1463,1467,1471,1479,1487,1495,1503,
	1511,1519,1527,1535,1551,1559,1567,1575,1583,1591,1599,1615,1623,1631,1647,1655,
	1663,1679,1695,1711,1719,1727,1743,1759,1775,1791,1823,1839,1855,1887,1919,1983	};

	const size_t xbitrev::jndx1024[ 496]= {
	1025, 513,1537, 257,1281, 769,1793, 129,1153, 641,1665, 385,1409, 897,1921,  65,
	1089, 577,1601, 321,1345, 833,1857, 193,1217, 705,1729, 449,1473, 961,1985,1057,
	 545,1569, 289,1313, 801,1825, 161,1185, 673,1697, 417,1441, 929,1953,1121, 609,
	1633, 353,1377, 865,1889, 225,1249, 737,1761, 481,1505, 993,2017,1041, 529,1553,
	 273,1297, 785,1809,1169, 657,1681, 401,1425, 913,1937,1105, 593,1617, 337,1361,
	 849,1873, 209,1233, 721,1745, 465,1489, 977,2001,1073, 561,1585, 305,1329, 817,
	1841,1201, 689,1713, 433,1457, 945,1969,1137, 625,1649, 369,1393, 881,1905,1265,
	 753,1777, 497,1521,1009,2033,1033, 521,1545,1289, 777,1801,1161, 649,1673, 393,
	1417, 905,1929,1097, 585,1609, 329,1353, 841,1865,1225, 713,1737, 457,1481, 969,
	1993,1065, 553,1577,1321, 809,1833,1193, 681,1705, 425,1449, 937,1961,1129, 617,
	1641,1385, 873,1897,1257, 745,1769, 489,1513,1001,2025,1049, 537,1561,1305, 793,
	1817,1177, 665,1689,1433, 921,1945,1113, 601,1625,1369, 857,1881,1241, 729,1753,
	 473,1497, 985,2009,1081, 569,1593,1337, 825,1849,1209, 697,1721,1465, 953,1977,
	1145, 633,1657,1401, 889,1913,1273, 761,1785,1529,1017,2041,1029,1541,1285, 773,
	1797,1157, 645,1669,1413, 901,1925,1093, 581,1605,1349, 837,1861,1221, 709,1733,
	1477, 965,1989,1061,1573,1317, 805,1829,1189, 677,1701,1445, 933,1957,1125,1637,
	1381, 869,1893,1253, 741,1765,1509, 997,2021,1045,1557,1301, 789,1813,1173,1685,
	1429, 917,1941,1109,1621,1365, 853,1877,1237, 725,1749,1493, 981,2005,1077,1589,
	1333, 821,1845,1205,1717,1461, 949,1973,1141,1653,1397, 885,1909,1269,1781,1525,
	1013,2037,1037,1549,1293,1805,1165,1677,1421, 909,1933,1101,1613,1357, 845,1869,
	1229,1741,1485, 973,1997,1069,1581,1325,1837,1197,1709,1453, 941,1965,1133,1645,
	1389,1901,1261,1773,1517,1005,2029,1053,1565,1309,1821,1181,1693,1437,1949,1117,
	1629,1373,1885,1245,1757,1501, 989,2013,1085,1597,1341,1853,1213,1725,1469,1981,
	1149,1661,1405,1917,1277,1789,1533,2045,1539,1283,1795,1155,1667,1411,1923,1091,
	1603,1347,1859,1219,1731,1475,1987,1571,1315,1827,1187,1699,1443,1955,1635,1379,
	1891,1251,1763,1507,2019,1555,1299,1811,1683,1427,1939,1619,1363,1875,1235,1747,
	1491,2003,1587,1331,1843,1715,1459,1971,1651,1395,1907,1779,1523,2035,1547,1803,
	1675,1419,1931,1611,1355,1867,1739,1483,1995,1579,1835,1707,1451,1963,1643,1899,
	1771,1515,2027,1563,1819,1691,1947,1627,1883,1755,1499,2011,1595,1851,1723,1979,
	1659,1915,1787,2043,1799,1671,1927,1607,1863,1735,1991,1831,1703,1959,1895,1767,
	2023,1815,1943,1879,1751,2007,1847,1975,1911,2039,1935,1871,1999,1967,2031,2015	};

	const size_t xbitrev::indx2048[ 992]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  33,
	  35,  37,  39,  41,  43,  45,  47,  49,  51,  53,  55,  57,  59,  61,  63,  67,
	  69,  71,  73,  75,  77,  79,  81,  83,  85,  87,  89,  91,  93,  95,  97,  99,
	 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 131, 133,
	 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 163, 165, 167,
	 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 195, 197, 199, 201,
	 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 227, 229, 231, 233, 235,
	 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 259, 261, 263, 265, 267, 269,
	 271, 275, 277, 279, 281, 283, 285, 287, 291, 293, 295, 297, 299, 301, 303, 305,
	 307, 309, 311, 313, 315, 317, 319, 323, 325, 327, 329, 331, 333, 335, 339, 341,
	 343, 345, 347, 349, 351, 355, 357, 359, 361, 363, 365, 367, 369, 371, 373, 375,
	 377, 379, 381, 383, 387, 389, 391, 393, 395, 397, 399, 403, 405, 407, 409, 411,
	 413, 415, 419, 421, 423, 425, 427, 429, 431, 435, 437, 439, 441, 443, 445, 447,
	 451, 453, 455, 457, 459, 461, 463, 467, 469, 471, 473, 475, 477, 479, 483, 485,
	 487, 489, 491, 493, 495, 499, 501, 503, 505, 507, 509, 511, 515, 517, 519, 523,
	 525, 527, 531, 533, 535, 537, 539, 541, 543, 547, 549, 551, 553, 555, 557, 559,
	 563, 565, 567, 569, 571, 573, 575, 579, 581, 583, 587, 589, 591, 595, 597, 599,
	 601, 603, 605, 607, 611, 613, 615, 617, 619, 621, 623, 627, 629, 631, 633, 635,
	 637, 639, 643, 645, 647, 651, 653, 655, 659, 661, 663, 665, 667, 669, 671, 675,
	 677, 679, 683, 685, 687, 691, 693, 695, 697, 699, 701, 703, 707, 709, 711, 715,
	 717, 719, 723, 725, 727, 729, 731, 733, 735, 739, 741, 743, 747, 749, 751, 755,
	 757, 759, 761, 763, 765, 767, 771, 773, 775, 779, 781, 783, 787, 789, 791, 795,
	 797, 799, 803, 805, 807, 811, 813, 815, 819, 821, 823, 825, 827, 829, 831, 835,
	 837, 839, 843, 845, 847, 851, 853, 855, 859, 861, 863, 867, 869, 871, 875, 877,
	 879, 883, 885, 887, 889, 891, 893, 895, 899, 901, 903, 907, 909, 911, 915, 917,
	 919, 923, 925, 927, 931, 933, 935, 939, 941, 943, 947, 949, 951, 955, 957, 959,
	 963, 965, 967, 971, 973, 975, 979, 981, 983, 987, 989, 991, 995, 997, 999,1003,
	1005,1007,1011,1013,1015,1019,1021,1023,1027,1031,1035,1037,1039,1043,1045,1047,
	1051,1053,1055,1059,1061,1063,1067,1069,1071,1075,1077,1079,1083,1085,1087,1091,
	1095,1099,1101,1103,1107,1109,1111,1115,1117,1119,1123,1125,1127,1131,1133,1135,
	1139,1141,1143,1147,1149,1151,1155,1159,1163,1165,1167,1171,1173,1175,1179,1181,
	1183,1187,1191,1195,1197,1199,1203,1205,1207,1211,1213,1215,1219,1223,1227,1229,
	1231,1235,1237,1239,1243,1245,1247,1251,1255,1259,1261,1263,1267,1269,1271,1275,
	1277,1279,1283,1287,1291,1293,1295,1299,1303,1307,1309,1311,1315,1319,1323,1325,
	1327,1331,1333,1335,1339,1341,1343,1347,1351,1355,1357,1359,1363,1367,1371,1373,
	1375,1379,1383,1387,1389,1391,1395,1397,1399,1403,1405,1407,1411,1415,1419,1421,
	1423,1427,1431,1435,1437,1439,1443,1447,1451,1453,1455,1459,1463,1467,1469,1471,
	1475,1479,1483,1485,1487,1491,1495,1499,1501,1503,1507,1511,1515,1517,1519,1523,
	1527,1531,1533,1535,1539,1543,1547,1551,1555,1559,1563,1565,1567,1571,1575,1579,
	1581,1583,1587,1591,1595,1597,1599,1603,1607,1611,1615,1619,1623,1627,1629,1631,
	1635,1639,1643,1645,1647,1651,1655,1659,1661,1663,1667,1671,1675,1679,1683,1687,
	1691,1693,1695,1699,1703,1707,1711,1715,1719,1723,1725,1727,1731,1735,1739,1743,
	1747,1751,1755,1757,1759,1763,1767,1771,1775,1779,1783,1787,1789,1791,1795,1799,
	1803,1807,1811,1815,1819,1823,1827,1831,1835,1839,1843,1847,1851,1853,1855,1859,
	1863,1867,1871,1875,1879,1883,1887,1891,1895,1899,1903,1907,1911,1915,1917,1919,
	1923,1927,1931,1935,1939,1943,1947,1951,1955,1959,1963,1967,1971,1975,1979,1983,
	1987,1991,1995,1999,2003,2007,2011,2015,2019,2023,2027,2031,2035,2039,2043,2047,
	2055,2059,2063,2067,2071,2075,2079,2083,2087,2091,2095,2099,2103,2107,2111,2119,
	2123,2127,2131,2135,2139,2143,2147,2151,2155,2159,2163,2167,2171,2175,2183,2187,
	2191,2195,2199,2203,2207,2215,2219,2223,2227,2231,2235,2239,2247,2251,2255,2259,
	2263,2267,2271,2279,2283,2287,2291,2295,2299,2303,2311,2315,2319,2327,2331,2335,
	2343,2347,2351,2355,2359,2363,2367,2375,2379,2383,2391,2395,2399,2407,2411,2415,
	2419,2423,2427,2431,2439,2443,2447,2455,2459,2463,2471,2475,2479,2487,2491,2495,
	2503,2507,2511,2519,2523,2527,2535,2539,2543,2551,2555,2559,2567,2575,2583,2587,
	2591,2599,2603,2607,2615,2619,2623,2631,2639,2647,2651,2655,2663,2667,2671,2679,
	2683,2687,2695,2703,2711,2715,2719,2727,2735,2743,2747,2751,2759,2767,2775,2779,
	2783,2791,2799,2807,2811,2815,2823,2831,2839,2847,2855,2863,2871,2875,2879,2887,
	2895,2903,2911,2919,2927,2935,2939,2943,2951,2959,2967,2975,2983,2991,2999,3007,
	3015,3023,3031,3039,3047,3055,3063,3071,3087,3095,3103,3111,3119,3127,3135,3151,
	3159,3167,3175,3183,3191,3199,3215,3223,3231,3247,3255,3263,3279,3287,3295,3311,
	3319,3327,3343,3359,3375,3383,3391,3407,3423,3439,3447,3455,3471,3487,3503,3519,
	3535,3551,3567,3583,3615,3631,3647,3679,3695,3711,3743,3775,3807,3839,3903,3967	};

	const size_t xbitrev::jndx2048[ 992]= {
	2049,1025,3073, 513,2561,1537,3585, 257,2305,1281,3329, 769,2817,1793,3841, 129,
	2177,1153,3201, 641,2689,1665,3713, 385,2433,1409,3457, 897,2945,1921,3969,2113,
	1089,3137, 577,2625,1601,3649, 321,2369,1345,3393, 833,2881,1857,3905, 193,2241,
	1217,3265, 705,2753,1729,3777, 449,2497,1473,3521, 961,3009,1985,4033,2081,1057,
	3105, 545,2593,1569,3617, 289,2337,1313,3361, 801,2849,1825,3873,2209,1185,3233,
	 673,2721,1697,3745, 417,2465,1441,3489, 929,2977,1953,4001,2145,1121,3169, 609,
	2657,1633,3681, 353,2401,1377,3425, 865,2913,1889,3937,2273,1249,3297, 737,2785,
	1761,3809, 481,2529,1505,3553, 993,3041,2017,4065,2065,1041,3089, 529,2577,1553,
	3601,2321,1297,3345, 785,2833,1809,3857,2193,1169,3217, 657,2705,1681,3729, 401,
	2449,1425,3473, 913,2961,1937,3985,2129,1105,3153, 593,2641,1617,3665,2385,1361,
	3409, 849,2897,1873,3921,2257,1233,3281, 721,2769,1745,3793, 465,2513,1489,3537,
	 977,3025,2001,4049,2097,1073,3121, 561,2609,1585,3633,2353,1329,3377, 817,2865,
	1841,3889,2225,1201,3249, 689,2737,1713,3761,2481,1457,3505, 945,2993,1969,4017,
	2161,1137,3185, 625,2673,1649,3697,2417,1393,3441, 881,2929,1905,3953,2289,1265,
	3313, 753,2801,1777,3825,2545,1521,3569,1009,3057,2033,4081,2057,1033,3081,2569,
	1545,3593,2313,1289,3337, 777,2825,1801,3849,2185,1161,3209, 649,2697,1673,3721,
	2441,1417,3465, 905,2953,1929,3977,2121,1097,3145,2633,1609,3657,2377,1353,3401,
	 841,2889,1865,3913,2249,1225,3273, 713,2761,1737,3785,2505,1481,3529, 969,3017,
	1993,4041,2089,1065,3113,2601,1577,3625,2345,1321,3369, 809,2857,1833,3881,2217,
	1193,3241,2729,1705,3753,2473,1449,3497, 937,2985,1961,4009,2153,1129,3177,2665,
	1641,3689,2409,1385,3433, 873,2921,1897,3945,2281,1257,3305,2793,1769,3817,2537,
	1513,3561,1001,3049,2025,4073,2073,1049,3097,2585,1561,3609,2329,1305,3353,2841,
	1817,3865,2201,1177,3225,2713,1689,3737,2457,1433,3481, 921,2969,1945,3993,2137,
	1113,3161,2649,1625,3673,2393,1369,3417,2905,1881,3929,2265,1241,3289,2777,1753,
	3801,2521,1497,3545, 985,3033,2009,4057,2105,1081,3129,2617,1593,3641,2361,1337,
	3385,2873,1849,3897,2233,1209,3257,2745,1721,3769,2489,1465,3513,3001,1977,4025,
	2169,1145,3193,2681,1657,3705,2425,1401,3449,2937,1913,3961,2297,1273,3321,2809,
	1785,3833,2553,1529,3577,3065,2041,4089,2053,3077,2565,1541,3589,2309,1285,3333,
	2821,1797,3845,2181,1157,3205,2693,1669,3717,2437,1413,3461,2949,1925,3973,2117,
	3141,2629,1605,3653,2373,1349,3397,2885,1861,3909,2245,1221,3269,2757,1733,3781,
	2501,1477,3525,3013,1989,4037,2085,3109,2597,1573,3621,2341,1317,3365,2853,1829,
	3877,2213,3237,2725,1701,3749,2469,1445,3493,2981,1957,4005,2149,3173,2661,1637,
	3685,2405,1381,3429,2917,1893,3941,2277,3301,2789,1765,3813,2533,1509,3557,3045,
	2021,4069,2069,3093,2581,1557,3605,2325,3349,2837,1813,3861,2197,3221,2709,1685,
	3733,2453,1429,3477,2965,1941,3989,2133,3157,2645,1621,3669,2389,3413,2901,1877,
	3925,2261,3285,2773,1749,3797,2517,1493,3541,3029,2005,4053,2101,3125,2613,1589,
	3637,2357,3381,2869,1845,3893,2229,3253,2741,1717,3765,2485,3509,2997,1973,4021,
	2165,3189,2677,1653,3701,2421,3445,2933,1909,3957,2293,3317,2805,1781,3829,2549,
	3573,3061,2037,4085,2061,3085,2573,3597,2317,3341,2829,1805,3853,2189,3213,2701,
	1677,3725,2445,3469,2957,1933,3981,2125,3149,2637,3661,2381,3405,2893,1869,3917,
	2253,3277,2765,1741,3789,2509,3533,3021,1997,4045,2093,3117,2605,3629,2349,3373,
	2861,1837,3885,2221,3245,2733,3757,2477,3501,2989,1965,4013,2157,3181,2669,3693,
	2413,3437,2925,1901,3949,2285,3309,2797,3821,2541,3565,3053,2029,4077,2077,3101,
	2589,3613,2333,3357,2845,3869,2205,3229,2717,3741,2461,3485,2973,1949,3997,2141,
	3165,2653,3677,2397,3421,2909,3933,2269,3293,2781,3805,2525,3549,3037,2013,4061,
	2109,3133,2621,3645,2365,3389,2877,3901,2237,3261,2749,3773,2493,3517,3005,4029,
	2173,3197,2685,3709,2429,3453,2941,3965,2301,3325,2813,3837,2557,3581,3069,4093,
	3075,2563,3587,2307,3331,2819,3843,2179,3203,2691,3715,2435,3459,2947,3971,3139,
	2627,3651,2371,3395,2883,3907,2243,3267,2755,3779,2499,3523,3011,4035,3107,2595,
	3619,2339,3363,2851,3875,3235,2723,3747,2467,3491,2979,4003,3171,2659,3683,2403,
	3427,2915,3939,3299,2787,3811,2531,3555,3043,4067,3091,2579,3603,3347,2835,3859,
	3219,2707,3731,2451,3475,2963,3987,3155,2643,3667,3411,2899,3923,3283,2771,3795,
	2515,3539,3027,4051,3123,2611,3635,3379,2867,3891,3251,2739,3763,3507,2995,4019,
	3187,2675,3699,3443,2931,3955,3315,2803,3827,3571,3059,4083,3083,3595,3339,2827,
	3851,3211,2699,3723,3467,2955,3979,3147,3659,3403,2891,3915,3275,2763,3787,3531,
	3019,4043,3115,3627,3371,2859,3883,3243,3755,3499,2987,4011,3179,3691,3435,2923,
	3947,3307,3819,3563,3051,4075,3099,3611,3355,3867,3227,3739,3483,2971,3995,3163,
	3675,3419,3931,3291,3803,3547,3035,4059,3131,3643,3387,3899,3259,3771,3515,4027,
	3195,3707,3451,3963,3323,3835,3579,4091,3591,3335,3847,3207,3719,3463,3975,3655,
	3399,3911,3271,3783,3527,4039,3623,3367,3879,3751,3495,4007,3687,3431,3943,3815,
	3559,4071,3607,3863,3735,3479,3991,3671,3927,3799,3543,4055,3639,3895,3767,4023,
	3703,3959,3831,4087,3855,3727,3983,3919,3791,4047,3887,4015,3951,4079,3999,4063	};

	const size_t xbitrev::indx4096[2016]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  33,
	  35,  37,  39,  41,  43,  45,  47,  49,  51,  53,  55,  57,  59,  61,  63,  65,
	  67,  69,  71,  73,  75,  77,  79,  81,  83,  85,  87,  89,  91,  93,  95,  97,
	  99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 131,
	 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163,
	 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 195, 197,
	 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229,
	 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 259, 261, 263,
	 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 291, 293, 295, 297,
	 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 323, 325, 327, 329, 331,
	 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, 353, 355, 357, 359, 361, 363,
	 365, 367, 369, 371, 373, 375, 377, 379, 381, 383, 387, 389, 391, 393, 395, 397,
	 399, 401, 403, 405, 407, 409, 411, 413, 415, 419, 421, 423, 425, 427, 429, 431,
	 433, 435, 437, 439, 441, 443, 445, 447, 451, 453, 455, 457, 459, 461, 463, 465,
	 467, 469, 471, 473, 475, 477, 479, 483, 485, 487, 489, 491, 493, 495, 497, 499,
	 501, 503, 505, 507, 509, 511, 515, 517, 519, 521, 523, 525, 527, 531, 533, 535,
	 537, 539, 541, 543, 547, 549, 551, 553, 555, 557, 559, 561, 563, 565, 567, 569,
	 571, 573, 575, 579, 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, 601, 603,
	 605, 607, 611, 613, 615, 617, 619, 621, 623, 625, 627, 629, 631, 633, 635, 637,
	 639, 643, 645, 647, 649, 651, 653, 655, 659, 661, 663, 665, 667, 669, 671, 675,
	 677, 679, 681, 683, 685, 687, 689, 691, 693, 695, 697, 699, 701, 703, 707, 709,
	 711, 713, 715, 717, 719, 723, 725, 727, 729, 731, 733, 735, 739, 741, 743, 745,
	 747, 749, 751, 753, 755, 757, 759, 761, 763, 765, 767, 771, 773, 775, 777, 779,
	 781, 783, 787, 789, 791, 793, 795, 797, 799, 803, 805, 807, 809, 811, 813, 815,
	 819, 821, 823, 825, 827, 829, 831, 835, 837, 839, 841, 843, 845, 847, 851, 853,
	 855, 857, 859, 861, 863, 867, 869, 871, 873, 875, 877, 879, 881, 883, 885, 887,
	 889, 891, 893, 895, 899, 901, 903, 905, 907, 909, 911, 915, 917, 919, 921, 923,
	 925, 927, 931, 933, 935, 937, 939, 941, 943, 947, 949, 951, 953, 955, 957, 959,
	 963, 965, 967, 969, 971, 973, 975, 979, 981, 983, 985, 987, 989, 991, 995, 997,
	 999,1001,1003,1005,1007,1011,1013,1015,1017,1019,1021,1023,1027,1029,1031,1035,
	1037,1039,1043,1045,1047,1049,1051,1053,1055,1059,1061,1063,1065,1067,1069,1071,
	1075,1077,1079,1081,1083,1085,1087,1091,1093,1095,1097,1099,1101,1103,1107,1109,
	1111,1113,1115,1117,1119,1123,1125,1127,1129,1131,1133,1135,1139,1141,1143,1145,
	1147,1149,1151,1155,1157,1159,1163,1165,1167,1171,1173,1175,1177,1179,1181,1183,
	1187,1189,1191,1193,1195,1197,1199,1203,1205,1207,1209,1211,1213,1215,1219,1221,
	1223,1227,1229,1231,1235,1237,1239,1241,1243,1245,1247,1251,1253,1255,1257,1259,
	1261,1263,1267,1269,1271,1273,1275,1277,1279,1283,1285,1287,1291,1293,1295,1299,
	1301,1303,1305,1307,1309,1311,1315,1317,1319,1323,1325,1327,1331,1333,1335,1337,
	1339,1341,1343,1347,1349,1351,1355,1357,1359,1363,1365,1367,1369,1371,1373,1375,
	1379,1381,1383,1385,1387,1389,1391,1395,1397,1399,1401,1403,1405,1407,1411,1413,
	1415,1419,1421,1423,1427,1429,1431,1433,1435,1437,1439,1443,1445,1447,1451,1453,
	1455,1459,1461,1463,1465,1467,1469,1471,1475,1477,1479,1483,1485,1487,1491,1493,
	1495,1497,1499,1501,1503,1507,1509,1511,1515,1517,1519,1523,1525,1527,1529,1531,
	1533,1535,1539,1541,1543,1547,1549,1551,1555,1557,1559,1563,1565,1567,1571,1573,
	1575,1579,1581,1583,1587,1589,1591,1593,1595,1597,1599,1603,1605,1607,1611,1613,
	1615,1619,1621,1623,1625,1627,1629,1631,1635,1637,1639,1643,1645,1647,1651,1653,
	1655,1657,1659,1661,1663,1667,1669,1671,1675,1677,1679,1683,1685,1687,1691,1693,
	1695,1699,1701,1703,1707,1709,1711,1715,1717,1719,1721,1723,1725,1727,1731,1733,
	1735,1739,1741,1743,1747,1749,1751,1755,1757,1759,1763,1765,1767,1771,1773,1775,
	1779,1781,1783,1785,1787,1789,1791,1795,1797,1799,1803,1805,1807,1811,1813,1815,
	1819,1821,1823,1827,1829,1831,1835,1837,1839,1843,1845,1847,1851,1853,1855,1859,
	1861,1863,1867,1869,1871,1875,1877,1879,1883,1885,1887,1891,1893,1895,1899,1901,
	1903,1907,1909,1911,1913,1915,1917,1919,1923,1925,1927,1931,1933,1935,1939,1941,
	1943,1947,1949,1951,1955,1957,1959,1963,1965,1967,1971,1973,1975,1979,1981,1983,
	1987,1989,1991,1995,1997,1999,2003,2005,2007,2011,2013,2015,2019,2021,2023,2027,
	2029,2031,2035,2037,2039,2043,2045,2047,2051,2055,2059,2061,2063,2067,2069,2071,
	2075,2077,2079,2083,2085,2087,2091,2093,2095,2099,2101,2103,2107,2109,2111,2115,
	2117,2119,2123,2125,2127,2131,2133,2135,2139,2141,2143,2147,2149,2151,2155,2157,
	2159,2163,2165,2167,2171,2173,2175,2179,2183,2187,2189,2191,2195,2197,2199,2203,
	2205,2207,2211,2213,2215,2219,2221,2223,2227,2229,2231,2235,2237,2239,2243,2247,
	2251,2253,2255,2259,2261,2263,2267,2269,2271,2275,2277,2279,2283,2285,2287,2291,
	2293,2295,2299,2301,2303,2307,2311,2315,2317,2319,2323,2325,2327,2331,2333,2335,
	2339,2343,2347,2349,2351,2355,2357,2359,2363,2365,2367,2371,2375,2379,2381,2383,
	2387,2389,2391,2395,2397,2399,2403,2405,2407,2411,2413,2415,2419,2421,2423,2427,
	2429,2431,2435,2439,2443,2445,2447,2451,2453,2455,2459,2461,2463,2467,2471,2475,
	2477,2479,2483,2485,2487,2491,2493,2495,2499,2503,2507,2509,2511,2515,2517,2519,
	2523,2525,2527,2531,2535,2539,2541,2543,2547,2549,2551,2555,2557,2559,2563,2567,
	2571,2573,2575,2579,2583,2587,2589,2591,2595,2599,2603,2605,2607,2611,2613,2615,
	2619,2621,2623,2627,2631,2635,2637,2639,2643,2645,2647,2651,2653,2655,2659,2663,
	2667,2669,2671,2675,2677,2679,2683,2685,2687,2691,2695,2699,2701,2703,2707,2711,
	2715,2717,2719,2723,2727,2731,2733,2735,2739,2741,2743,2747,2749,2751,2755,2759,
	2763,2765,2767,2771,2775,2779,2781,2783,2787,2791,2795,2797,2799,2803,2805,2807,
	2811,2813,2815,2819,2823,2827,2829,2831,2835,2839,2843,2845,2847,2851,2855,2859,
	2861,2863,2867,2871,2875,2877,2879,2883,2887,2891,2893,2895,2899,2903,2907,2909,
	2911,2915,2919,2923,2925,2927,2931,2933,2935,2939,2941,2943,2947,2951,2955,2957,
	2959,2963,2967,2971,2973,2975,2979,2983,2987,2989,2991,2995,2999,3003,3005,3007,
	3011,3015,3019,3021,3023,3027,3031,3035,3037,3039,3043,3047,3051,3053,3055,3059,
	3063,3067,3069,3071,3075,3079,3083,3087,3091,3095,3099,3101,3103,3107,3111,3115,
	3117,3119,3123,3127,3131,3133,3135,3139,3143,3147,3149,3151,3155,3159,3163,3165,
	3167,3171,3175,3179,3181,3183,3187,3191,3195,3197,3199,3203,3207,3211,3215,3219,
	3223,3227,3229,3231,3235,3239,3243,3245,3247,3251,3255,3259,3261,3263,3267,3271,
	3275,3279,3283,3287,3291,3293,3295,3299,3303,3307,3309,3311,3315,3319,3323,3325,
	3327,3331,3335,3339,3343,3347,3351,3355,3357,3359,3363,3367,3371,3375,3379,3383,
	3387,3389,3391,3395,3399,3403,3407,3411,3415,3419,3421,3423,3427,3431,3435,3437,
	3439,3443,3447,3451,3453,3455,3459,3463,3467,3471,3475,3479,3483,3485,3487,3491,
	3495,3499,3503,3507,3511,3515,3517,3519,3523,3527,3531,3535,3539,3543,3547,3549,
	3551,3555,3559,3563,3567,3571,3575,3579,3581,3583,3587,3591,3595,3599,3603,3607,
	3611,3615,3619,3623,3627,3631,3635,3639,3643,3645,3647,3651,3655,3659,3663,3667,
	3671,3675,3677,3679,3683,3687,3691,3695,3699,3703,3707,3709,3711,3715,3719,3723,
	3727,3731,3735,3739,3743,3747,3751,3755,3759,3763,3767,3771,3773,3775,3779,3783,
	3787,3791,3795,3799,3803,3807,3811,3815,3819,3823,3827,3831,3835,3837,3839,3843,
	3847,3851,3855,3859,3863,3867,3871,3875,3879,3883,3887,3891,3895,3899,3903,3907,
	3911,3915,3919,3923,3927,3931,3935,3939,3943,3947,3951,3955,3959,3963,3965,3967,
	3971,3975,3979,3983,3987,3991,3995,3999,4003,4007,4011,4015,4019,4023,4027,4031,
	4035,4039,4043,4047,4051,4055,4059,4063,4067,4071,4075,4079,4083,4087,4091,4095,
	4103,4107,4111,4115,4119,4123,4127,4131,4135,4139,4143,4147,4151,4155,4159,4163,
	4167,4171,4175,4179,4183,4187,4191,4195,4199,4203,4207,4211,4215,4219,4223,4231,
	4235,4239,4243,4247,4251,4255,4259,4263,4267,4271,4275,4279,4283,4287,4295,4299,
	4303,4307,4311,4315,4319,4323,4327,4331,4335,4339,4343,4347,4351,4359,4363,4367,
	4371,4375,4379,4383,4391,4395,4399,4403,4407,4411,4415,4423,4427,4431,4435,4439,
	4443,4447,4451,4455,4459,4463,4467,4471,4475,4479,4487,4491,4495,4499,4503,4507,
	4511,4519,4523,4527,4531,4535,4539,4543,4551,4555,4559,4563,4567,4571,4575,4583,
	4587,4591,4595,4599,4603,4607,4615,4619,4623,4631,4635,4639,4647,4651,4655,4659,
	4663,4667,4671,4679,4683,4687,4691,4695,4699,4703,4711,4715,4719,4723,4727,4731,
	4735,4743,4747,4751,4759,4763,4767,4775,4779,4783,4787,4791,4795,4799,4807,4811,
	4815,4823,4827,4831,4839,4843,4847,4851,4855,4859,4863,4871,4875,4879,4887,4891,
	4895,4903,4907,4911,4919,4923,4927,4935,4939,4943,4951,4955,4959,4967,4971,4975,
	4979,4983,4987,4991,4999,5003,5007,5015,5019,5023,5031,5035,5039,5047,5051,5055,
	5063,5067,5071,5079,5083,5087,5095,5099,5103,5111,5115,5119,5127,5135,5143,5147,
	5151,5159,5163,5167,5175,5179,5183,5191,5195,5199,5207,5211,5215,5223,5227,5231,
	5239,5243,5247,5255,5263,5271,5275,5279,5287,5291,5295,5303,5307,5311,5319,5327,
	5335,5339,5343,5351,5355,5359,5367,5371,5375,5383,5391,5399,5403,5407,5415,5423,
	5431,5435,5439,5447,5455,5463,5467,5471,5479,5483,5487,5495,5499,5503,5511,5519,
	5527,5531,5535,5543,5551,5559,5563,5567,5575,5583,5591,5595,5599,5607,5615,5623,
	5627,5631,5639,5647,5655,5663,5671,5679,5687,5691,5695,5703,5711,5719,5723,5727,
	5735,5743,5751,5755,5759,5767,5775,5783,5791,5799,5807,5815,5819,5823,5831,5839,
	5847,5855,5863,5871,5879,5883,5887,5895,5903,5911,5919,5927,5935,5943,5951,5959,
	5967,5975,5983,5991,5999,6007,6011,6015,6023,6031,6039,6047,6055,6063,6071,6079,
	6087,6095,6103,6111,6119,6127,6135,6143,6159,6167,6175,6183,6191,6199,6207,6215,
	6223,6231,6239,6247,6255,6263,6271,6287,6295,6303,6311,6319,6327,6335,6351,6359,
	6367,6375,6383,6391,6399,6415,6423,6431,6447,6455,6463,6479,6487,6495,6503,6511,
	6519,6527,6543,6551,6559,6575,6583,6591,6607,6615,6623,6639,6647,6655,6671,6687,
	6703,6711,6719,6735,6743,6751,6767,6775,6783,6799,6815,6831,6839,6847,6863,6879,
	6895,6903,6911,6927,6943,6959,6975,6991,7007,7023,7031,7039,7055,7071,7087,7103,
	7119,7135,7151,7167,7199,7215,7231,7247,7263,7279,7295,7327,7343,7359,7391,7407,
	7423,7455,7487,7519,7535,7551,7583,7615,7647,7679,7743,7775,7807,7871,7935,8063	};

	const size_t xbitrev::jndx4096[2016]= {
	4097,2049,6145,1025,5121,3073,7169, 513,4609,2561,6657,1537,5633,3585,7681, 257,
	4353,2305,6401,1281,5377,3329,7425, 769,4865,2817,6913,1793,5889,3841,7937, 129,
	4225,2177,6273,1153,5249,3201,7297, 641,4737,2689,6785,1665,5761,3713,7809, 385,
	4481,2433,6529,1409,5505,3457,7553, 897,4993,2945,7041,1921,6017,3969,8065,4161,
	2113,6209,1089,5185,3137,7233, 577,4673,2625,6721,1601,5697,3649,7745, 321,4417,
	2369,6465,1345,5441,3393,7489, 833,4929,2881,6977,1857,5953,3905,8001,4289,2241,
	6337,1217,5313,3265,7361, 705,4801,2753,6849,1729,5825,3777,7873, 449,4545,2497,
	6593,1473,5569,3521,7617, 961,5057,3009,7105,1985,6081,4033,8129,4129,2081,6177,
	1057,5153,3105,7201, 545,4641,2593,6689,1569,5665,3617,7713,4385,2337,6433,1313,
	5409,3361,7457, 801,4897,2849,6945,1825,5921,3873,7969,4257,2209,6305,1185,5281,
	3233,7329, 673,4769,2721,6817,1697,5793,3745,7841, 417,4513,2465,6561,1441,5537,
	3489,7585, 929,5025,2977,7073,1953,6049,4001,8097,4193,2145,6241,1121,5217,3169,
	7265, 609,4705,2657,6753,1633,5729,3681,7777,4449,2401,6497,1377,5473,3425,7521,
	 865,4961,2913,7009,1889,5985,3937,8033,4321,2273,6369,1249,5345,3297,7393, 737,
	4833,2785,6881,1761,5857,3809,7905,4577,2529,6625,1505,5601,3553,7649, 993,5089,
	3041,7137,2017,6113,4065,8161,4113,2065,6161,1041,5137,3089,7185,4625,2577,6673,
	1553,5649,3601,7697,4369,2321,6417,1297,5393,3345,7441, 785,4881,2833,6929,1809,
	5905,3857,7953,4241,2193,6289,1169,5265,3217,7313, 657,4753,2705,6801,1681,5777,
	3729,7825,4497,2449,6545,1425,5521,3473,7569, 913,5009,2961,7057,1937,6033,3985,
	8081,4177,2129,6225,1105,5201,3153,7249,4689,2641,6737,1617,5713,3665,7761,4433,
	2385,6481,1361,5457,3409,7505, 849,4945,2897,6993,1873,5969,3921,8017,4305,2257,
	6353,1233,5329,3281,7377,4817,2769,6865,1745,5841,3793,7889,4561,2513,6609,1489,
	5585,3537,7633, 977,5073,3025,7121,2001,6097,4049,8145,4145,2097,6193,1073,5169,
	3121,7217,4657,2609,6705,1585,5681,3633,7729,4401,2353,6449,1329,5425,3377,7473,
	4913,2865,6961,1841,5937,3889,7985,4273,2225,6321,1201,5297,3249,7345,4785,2737,
	6833,1713,5809,3761,7857,4529,2481,6577,1457,5553,3505,7601, 945,5041,2993,7089,
	1969,6065,4017,8113,4209,2161,6257,1137,5233,3185,7281,4721,2673,6769,1649,5745,
	3697,7793,4465,2417,6513,1393,5489,3441,7537,4977,2929,7025,1905,6001,3953,8049,
	4337,2289,6385,1265,5361,3313,7409,4849,2801,6897,1777,5873,3825,7921,4593,2545,
	6641,1521,5617,3569,7665,5105,3057,7153,2033,6129,4081,8177,4105,2057,6153,5129,
	3081,7177,4617,2569,6665,1545,5641,3593,7689,4361,2313,6409,1289,5385,3337,7433,
	4873,2825,6921,1801,5897,3849,7945,4233,2185,6281,1161,5257,3209,7305,4745,2697,
	6793,1673,5769,3721,7817,4489,2441,6537,1417,5513,3465,7561,5001,2953,7049,1929,
	6025,3977,8073,4169,2121,6217,5193,3145,7241,4681,2633,6729,1609,5705,3657,7753,
	4425,2377,6473,1353,5449,3401,7497,4937,2889,6985,1865,5961,3913,8009,4297,2249,
	6345,5321,3273,7369,4809,2761,6857,1737,5833,3785,7881,4553,2505,6601,1481,5577,
	3529,7625,5065,3017,7113,1993,6089,4041,8137,4137,2089,6185,5161,3113,7209,4649,
	2601,6697,1577,5673,3625,7721,4393,2345,6441,5417,3369,7465,4905,2857,6953,1833,
	5929,3881,7977,4265,2217,6313,5289,3241,7337,4777,2729,6825,1705,5801,3753,7849,
	4521,2473,6569,1449,5545,3497,7593,5033,2985,7081,1961,6057,4009,8105,4201,2153,
	6249,5225,3177,7273,4713,2665,6761,1641,5737,3689,7785,4457,2409,6505,5481,3433,
	7529,4969,2921,7017,1897,5993,3945,8041,4329,2281,6377,5353,3305,7401,4841,2793,
	6889,1769,5865,3817,7913,4585,2537,6633,5609,3561,7657,5097,3049,7145,2025,6121,
	4073,8169,4121,2073,6169,5145,3097,7193,4633,2585,6681,5657,3609,7705,4377,2329,
	6425,5401,3353,7449,4889,2841,6937,1817,5913,3865,7961,4249,2201,6297,5273,3225,
	7321,4761,2713,6809,1689,5785,3737,7833,4505,2457,6553,5529,3481,7577,5017,2969,
	7065,1945,6041,3993,8089,4185,2137,6233,5209,3161,7257,4697,2649,6745,5721,3673,
	7769,4441,2393,6489,5465,3417,7513,4953,2905,7001,1881,5977,3929,8025,4313,2265,
	6361,5337,3289,7385,4825,2777,6873,5849,3801,7897,4569,2521,6617,5593,3545,7641,
	5081,3033,7129,2009,6105,4057,8153,4153,2105,6201,5177,3129,7225,4665,2617,6713,
	5689,3641,7737,4409,2361,6457,5433,3385,7481,4921,2873,6969,5945,3897,7993,4281,
	2233,6329,5305,3257,7353,4793,2745,6841,5817,3769,7865,4537,2489,6585,5561,3513,
	7609,5049,3001,7097,1977,6073,4025,8121,4217,2169,6265,5241,3193,7289,4729,2681,
	6777,5753,3705,7801,4473,2425,6521,5497,3449,7545,4985,2937,7033,6009,3961,8057,
	4345,2297,6393,5369,3321,7417,4857,2809,6905,5881,3833,7929,4601,2553,6649,5625,
	3577,7673,5113,3065,7161,6137,4089,8185,4101,6149,5125,3077,7173,4613,2565,6661,
	5637,3589,7685,4357,2309,6405,5381,3333,7429,4869,2821,6917,5893,3845,7941,4229,
	2181,6277,5253,3205,7301,4741,2693,6789,5765,3717,7813,4485,2437,6533,5509,3461,
	7557,4997,2949,7045,6021,3973,8069,4165,6213,5189,3141,7237,4677,2629,6725,5701,
	3653,7749,4421,2373,6469,5445,3397,7493,4933,2885,6981,5957,3909,8005,4293,6341,
	5317,3269,7365,4805,2757,6853,5829,3781,7877,4549,2501,6597,5573,3525,7621,5061,
	3013,7109,6085,4037,8133,4133,6181,5157,3109,7205,4645,2597,6693,5669,3621,7717,
	4389,6437,5413,3365,7461,4901,2853,6949,5925,3877,7973,4261,6309,5285,3237,7333,
	4773,2725,6821,5797,3749,7845,4517,2469,6565,5541,3493,7589,5029,2981,7077,6053,
	4005,8101,4197,6245,5221,3173,7269,4709,2661,6757,5733,3685,7781,4453,6501,5477,
	3429,7525,4965,2917,7013,5989,3941,8037,4325,6373,5349,3301,7397,4837,2789,6885,
	5861,3813,7909,4581,6629,5605,3557,7653,5093,3045,7141,6117,4069,8165,4117,6165,
	5141,3093,7189,4629,6677,5653,3605,7701,4373,6421,5397,3349,7445,4885,2837,6933,
	5909,3861,7957,4245,6293,5269,3221,7317,4757,2709,6805,5781,3733,7829,4501,6549,
	5525,3477,7573,5013,2965,7061,6037,3989,8085,4181,6229,5205,3157,7253,4693,6741,
	5717,3669,7765,4437,6485,5461,3413,7509,4949,2901,6997,5973,3925,8021,4309,6357,
	5333,3285,7381,4821,6869,5845,3797,7893,4565,6613,5589,3541,7637,5077,3029,7125,
	6101,4053,8149,4149,6197,5173,3125,7221,4661,6709,5685,3637,7733,4405,6453,5429,
	3381,7477,4917,6965,5941,3893,7989,4277,6325,5301,3253,7349,4789,6837,5813,3765,
	7861,4533,6581,5557,3509,7605,5045,2997,7093,6069,4021,8117,4213,6261,5237,3189,
	7285,4725,6773,5749,3701,7797,4469,6517,5493,3445,7541,4981,7029,6005,3957,8053,
	4341,6389,5365,3317,7413,4853,6901,5877,3829,7925,4597,6645,5621,3573,7669,5109,
	7157,6133,4085,8181,4109,6157,5133,7181,4621,6669,5645,3597,7693,4365,6413,5389,
	3341,7437,4877,6925,5901,3853,7949,4237,6285,5261,3213,7309,4749,6797,5773,3725,
	7821,4493,6541,5517,3469,7565,5005,7053,6029,3981,8077,4173,6221,5197,7245,4685,
	6733,5709,3661,7757,4429,6477,5453,3405,7501,4941,6989,5965,3917,8013,4301,6349,
	5325,7373,4813,6861,5837,3789,7885,4557,6605,5581,3533,7629,5069,7117,6093,4045,
	8141,4141,6189,5165,7213,4653,6701,5677,3629,7725,4397,6445,5421,7469,4909,6957,
	5933,3885,7981,4269,6317,5293,7341,4781,6829,5805,3757,7853,4525,6573,5549,3501,
	7597,5037,7085,6061,4013,8109,4205,6253,5229,7277,4717,6765,5741,3693,7789,4461,
	6509,5485,7533,4973,7021,5997,3949,8045,4333,6381,5357,7405,4845,6893,5869,3821,
	7917,4589,6637,5613,7661,5101,7149,6125,4077,8173,4125,6173,5149,7197,4637,6685,
	5661,7709,4381,6429,5405,7453,4893,6941,5917,3869,7965,4253,6301,5277,7325,4765,
	6813,5789,3741,7837,4509,6557,5533,7581,5021,7069,6045,3997,8093,4189,6237,5213,
	7261,4701,6749,5725,7773,4445,6493,5469,7517,4957,7005,5981,3933,8029,4317,6365,
	5341,7389,4829,6877,5853,7901,4573,6621,5597,7645,5085,7133,6109,4061,8157,4157,
	6205,5181,7229,4669,6717,5693,7741,4413,6461,5437,7485,4925,6973,5949,7997,4285,
	6333,5309,7357,4797,6845,5821,7869,4541,6589,5565,7613,5053,7101,6077,4029,8125,
	4221,6269,5245,7293,4733,6781,5757,7805,4477,6525,5501,7549,4989,7037,6013,8061,
	4349,6397,5373,7421,4861,6909,5885,7933,4605,6653,5629,7677,5117,7165,6141,8189,
	6147,5123,7171,4611,6659,5635,7683,4355,6403,5379,7427,4867,6915,5891,7939,4227,
	6275,5251,7299,4739,6787,5763,7811,4483,6531,5507,7555,4995,7043,6019,8067,6211,
	5187,7235,4675,6723,5699,7747,4419,6467,5443,7491,4931,6979,5955,8003,6339,5315,
	7363,4803,6851,5827,7875,4547,6595,5571,7619,5059,7107,6083,8131,6179,5155,7203,
	4643,6691,5667,7715,6435,5411,7459,4899,6947,5923,7971,6307,5283,7331,4771,6819,
	5795,7843,4515,6563,5539,7587,5027,7075,6051,8099,6243,5219,7267,4707,6755,5731,
	7779,6499,5475,7523,4963,7011,5987,8035,6371,5347,7395,4835,6883,5859,7907,6627,
	5603,7651,5091,7139,6115,8163,6163,5139,7187,6675,5651,7699,6419,5395,7443,4883,
	6931,5907,7955,6291,5267,7315,4755,6803,5779,7827,6547,5523,7571,5011,7059,6035,
	8083,6227,5203,7251,6739,5715,7763,6483,5459,7507,4947,6995,5971,8019,6355,5331,
	7379,6867,5843,7891,6611,5587,7635,5075,7123,6099,8147,6195,5171,7219,6707,5683,
	7731,6451,5427,7475,6963,5939,7987,6323,5299,7347,6835,5811,7859,6579,5555,7603,
	5043,7091,6067,8115,6259,5235,7283,6771,5747,7795,6515,5491,7539,7027,6003,8051,
	6387,5363,7411,6899,5875,7923,6643,5619,7667,7155,6131,8179,6155,7179,6667,5643,
	7691,6411,5387,7435,6923,5899,7947,6283,5259,7307,6795,5771,7819,6539,5515,7563,
	7051,6027,8075,6219,7243,6731,5707,7755,6475,5451,7499,6987,5963,8011,6347,7371,
	6859,5835,7883,6603,5579,7627,7115,6091,8139,6187,7211,6699,5675,7723,6443,7467,
	6955,5931,7979,6315,7339,6827,5803,7851,6571,5547,7595,7083,6059,8107,6251,7275,
	6763,5739,7787,6507,7531,7019,5995,8043,6379,7403,6891,5867,7915,6635,7659,7147,
	6123,8171,6171,7195,6683,7707,6427,7451,6939,5915,7963,6299,7323,6811,5787,7835,
	6555,7579,7067,6043,8091,6235,7259,6747,7771,6491,7515,7003,5979,8027,6363,7387,
	6875,7899,6619,7643,7131,6107,8155,6203,7227,6715,7739,6459,7483,6971,7995,6331,
	7355,6843,7867,6587,7611,7099,6075,8123,6267,7291,6779,7803,6523,7547,7035,8059,
	6395,7419,6907,7931,6651,7675,7163,8187,7175,6663,7687,6407,7431,6919,7943,6279,
	7303,6791,7815,6535,7559,7047,8071,7239,6727,7751,6471,7495,6983,8007,7367,6855,
	7879,6599,7623,7111,8135,7207,6695,7719,7463,6951,7975,7335,6823,7847,6567,7591,
	7079,8103,7271,6759,7783,7527,7015,8039,7399,6887,7911,7655,7143,8167,7191,7703,
	7447,6935,7959,7319,6807,7831,7575,7063,8087,7255,7767,7511,6999,8023,7383,7895,
	7639,7127,8151,7223,7735,7479,7991,7351,7863,7607,7095,8119,7287,7799,7543,8055,
	7415,7927,7671,8183,7695,7439,7951,7311,7823,7567,8079,7759,7503,8015,7887,7631,
	8143,7727,7983,7855,7599,8111,7791,8047,7919,8175,7967,7839,8095,8031,8159,8127	};

	const size_t xbitrev::indx8192[4032]= {
	   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,  27,  29,  31,  33,
	  35,  37,  39,  41,  43,  45,  47,  49,  51,  53,  55,  57,  59,  61,  63,  65,
	  67,  69,  71,  73,  75,  77,  79,  81,  83,  85,  87,  89,  91,  93,  95,  97,
	  99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 131,
	 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163,
	 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195,
	 197, 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227,
	 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 259, 261,
	 263, 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
	 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 323, 325, 327,
	 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, 353, 355, 357, 359,
	 361, 363, 365, 367, 369, 371, 373, 375, 377, 379, 381, 383, 387, 389, 391, 393,
	 395, 397, 399, 401, 403, 405, 407, 409, 411, 413, 415, 417, 419, 421, 423, 425,
	 427, 429, 431, 433, 435, 437, 439, 441, 443, 445, 447, 451, 453, 455, 457, 459,
	 461, 463, 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, 485, 487, 489, 491,
	 493, 495, 497, 499, 501, 503, 505, 507, 509, 511, 515, 517, 519, 521, 523, 525,
	 527, 529, 531, 533, 535, 537, 539, 541, 543, 547, 549, 551, 553, 555, 557, 559,
	 561, 563, 565, 567, 569, 571, 573, 575, 579, 581, 583, 585, 587, 589, 591, 593,
	 595, 597, 599, 601, 603, 605, 607, 609, 611, 613, 615, 617, 619, 621, 623, 625,
	 627, 629, 631, 633, 635, 637, 639, 643, 645, 647, 649, 651, 653, 655, 657, 659,
	 661, 663, 665, 667, 669, 671, 675, 677, 679, 681, 683, 685, 687, 689, 691, 693,
	 695, 697, 699, 701, 703, 707, 709, 711, 713, 715, 717, 719, 721, 723, 725, 727,
	 729, 731, 733, 735, 737, 739, 741, 743, 745, 747, 749, 751, 753, 755, 757, 759,
	 761, 763, 765, 767, 771, 773, 775, 777, 779, 781, 783, 785, 787, 789, 791, 793,
	 795, 797, 799, 803, 805, 807, 809, 811, 813, 815, 817, 819, 821, 823, 825, 827,
	 829, 831, 835, 837, 839, 841, 843, 845, 847, 849, 851, 853, 855, 857, 859, 861,
	 863, 867, 869, 871, 873, 875, 877, 879, 881, 883, 885, 887, 889, 891, 893, 895,
	 899, 901, 903, 905, 907, 909, 911, 913, 915, 917, 919, 921, 923, 925, 927, 931,
	 933, 935, 937, 939, 941, 943, 945, 947, 949, 951, 953, 955, 957, 959, 963, 965,
	 967, 969, 971, 973, 975, 977, 979, 981, 983, 985, 987, 989, 991, 995, 997, 999,
	1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1027,1029,1031,1033,
	1035,1037,1039,1043,1045,1047,1049,1051,1053,1055,1059,1061,1063,1065,1067,1069,
	1071,1073,1075,1077,1079,1081,1083,1085,1087,1091,1093,1095,1097,1099,1101,1103,
	1105,1107,1109,1111,1113,1115,1117,1119,1123,1125,1127,1129,1131,1133,1135,1137,
	1139,1141,1143,1145,1147,1149,1151,1155,1157,1159,1161,1163,1165,1167,1171,1173,
	1175,1177,1179,1181,1183,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,
	1209,1211,1213,1215,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,
	1243,1245,1247,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,
	1277,1279,1283,1285,1287,1289,1291,1293,1295,1299,1301,1303,1305,1307,1309,1311,
	1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1347,
	1349,1351,1353,1355,1357,1359,1363,1365,1367,1369,1371,1373,1375,1379,1381,1383,
	1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1411,1413,1415,1417,
	1419,1421,1423,1427,1429,1431,1433,1435,1437,1439,1443,1445,1447,1449,1451,1453,
	1455,1457,1459,1461,1463,1465,1467,1469,1471,1475,1477,1479,1481,1483,1485,1487,
	1491,1493,1495,1497,1499,1501,1503,1507,1509,1511,1513,1515,1517,1519,1521,1523,
	1525,1527,1529,1531,1533,1535,1539,1541,1543,1545,1547,1549,1551,1555,1557,1559,
	1561,1563,1565,1567,1571,1573,1575,1577,1579,1581,1583,1587,1589,1591,1593,1595,
	1597,1599,1603,1605,1607,1609,1611,1613,1615,1619,1621,1623,1625,1627,1629,1631,
	1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1667,
	1669,1671,1673,1675,1677,1679,1683,1685,1687,1689,1691,1693,1695,1699,1701,1703,
	1705,1707,1709,1711,1715,1717,1719,1721,1723,1725,1727,1731,1733,1735,1737,1739,
	1741,1743,1747,1749,1751,1753,1755,1757,1759,1763,1765,1767,1769,1771,1773,1775,
	1777,1779,1781,1783,1785,1787,1789,1791,1795,1797,1799,1801,1803,1805,1807,1811,
	1813,1815,1817,1819,1821,1823,1827,1829,1831,1833,1835,1837,1839,1843,1845,1847,
	1849,1851,1853,1855,1859,1861,1863,1865,1867,1869,1871,1875,1877,1879,1881,1883,
	1885,1887,1891,1893,1895,1897,1899,1901,1903,1907,1909,1911,1913,1915,1917,1919,
	1923,1925,1927,1929,1931,1933,1935,1939,1941,1943,1945,1947,1949,1951,1955,1957,
	1959,1961,1963,1965,1967,1971,1973,1975,1977,1979,1981,1983,1987,1989,1991,1993,
	1995,1997,1999,2003,2005,2007,2009,2011,2013,2015,2019,2021,2023,2025,2027,2029,
	2031,2035,2037,2039,2041,2043,2045,2047,2051,2053,2055,2059,2061,2063,2067,2069,
	2071,2073,2075,2077,2079,2083,2085,2087,2089,2091,2093,2095,2099,2101,2103,2105,
	2107,2109,2111,2115,2117,2119,2121,2123,2125,2127,2131,2133,2135,2137,2139,2141,
	2143,2147,2149,2151,2153,2155,2157,2159,2163,2165,2167,2169,2171,2173,2175,2179,
	2181,2183,2187,2189,2191,2195,2197,2199,2201,2203,2205,2207,2211,2213,2215,2217,
	2219,2221,2223,2227,2229,2231,2233,2235,2237,2239,2243,2245,2247,2249,2251,2253,
	2255,2259,2261,2263,2265,2267,2269,2271,2275,2277,2279,2281,2283,2285,2287,2291,
	2293,2295,2297,2299,2301,2303,2307,2309,2311,2315,2317,2319,2323,2325,2327,2329,
	2331,2333,2335,2339,2341,2343,2345,2347,2349,2351,2355,2357,2359,2361,2363,2365,
	2367,2371,2373,2375,2379,2381,2383,2387,2389,2391,2393,2395,2397,2399,2403,2405,
	2407,2409,2411,2413,2415,2419,2421,2423,2425,2427,2429,2431,2435,2437,2439,2443,
	2445,2447,2451,2453,2455,2457,2459,2461,2463,2467,2469,2471,2473,2475,2477,2479,
	2483,2485,2487,2489,2491,2493,2495,2499,2501,2503,2507,2509,2511,2515,2517,2519,
	2521,2523,2525,2527,2531,2533,2535,2537,2539,2541,2543,2547,2549,2551,2553,2555,
	2557,2559,2563,2565,2567,2571,2573,2575,2579,2581,2583,2585,2587,2589,2591,2595,
	2597,2599,2603,2605,2607,2611,2613,2615,2617,2619,2621,2623,2627,2629,2631,2635,
	2637,2639,2643,2645,2647,2649,2651,2653,2655,2659,2661,2663,2665,2667,2669,2671,
	2675,2677,2679,2681,2683,2685,2687,2691,2693,2695,2699,2701,2703,2707,2709,2711,
	2713,2715,2717,2719,2723,2725,2727,2731,2733,2735,2739,2741,2743,2745,2747,2749,
	2751,2755,2757,2759,2763,2765,2767,2771,2773,2775,2777,2779,2781,2783,2787,2789,
	2791,2793,2795,2797,2799,2803,2805,2807,2809,2811,2813,2815,2819,2821,2823,2827,
	2829,2831,2835,2837,2839,2841,2843,2845,2847,2851,2853,2855,2859,2861,2863,2867,
	2869,2871,2873,2875,2877,2879,2883,2885,2887,2891,2893,2895,2899,2901,2903,2905,
	2907,2909,2911,2915,2917,2919,2923,2925,2927,2931,2933,2935,2937,2939,2941,2943,
	2947,2949,2951,2955,2957,2959,2963,2965,2967,2969,2971,2973,2975,2979,2981,2983,
	2987,2989,2991,2995,2997,2999,3001,3003,3005,3007,3011,3013,3015,3019,3021,3023,
	3027,3029,3031,3033,3035,3037,3039,3043,3045,3047,3051,3053,3055,3059,3061,3063,
	3065,3067,3069,3071,3075,3077,3079,3083,3085,3087,3091,3093,3095,3099,3101,3103,
	3107,3109,3111,3115,3117,3119,3123,3125,3127,3129,3131,3133,3135,3139,3141,3143,
	3147,3149,3151,3155,3157,3159,3161,3163,3165,3167,3171,3173,3175,3179,3181,3183,
	3187,3189,3191,3193,3195,3197,3199,3203,3205,3207,3211,3213,3215,3219,3221,3223,
	3227,3229,3231,3235,3237,3239,3243,3245,3247,3251,3253,3255,3257,3259,3261,3263,
	3267,3269,3271,3275,3277,3279,3283,3285,3287,3289,3291,3293,3295,3299,3301,3303,
	3307,3309,3311,3315,3317,3319,3321,3323,3325,3327,3331,3333,3335,3339,3341,3343,
	3347,3349,3351,3355,3357,3359,3363,3365,3367,3371,3373,3375,3379,3381,3383,3385,
	3387,3389,3391,3395,3397,3399,3403,3405,3407,3411,3413,3415,3419,3421,3423,3427,
	3429,3431,3435,3437,3439,3443,3445,3447,3449,3451,3453,3455,3459,3461,3463,3467,
	3469,3471,3475,3477,3479,3483,3485,3487,3491,3493,3495,3499,3501,3503,3507,3509,
	3511,3513,3515,3517,3519,3523,3525,3527,3531,3533,3535,3539,3541,3543,3547,3549,
	3551,3555,3557,3559,3563,3565,3567,3571,3573,3575,3577,3579,3581,3583,3587,3589,
	3591,3595,3597,3599,3603,3605,3607,3611,3613,3615,3619,3621,3623,3627,3629,3631,
	3635,3637,3639,3643,3645,3647,3651,3653,3655,3659,3661,3663,3667,3669,3671,3675,
	3677,3679,3683,3685,3687,3691,3693,3695,3699,3701,3703,3705,3707,3709,3711,3715,
	3717,3719,3723,3725,3727,3731,3733,3735,3739,3741,3743,3747,3749,3751,3755,3757,
	3759,3763,3765,3767,3771,3773,3775,3779,3781,3783,3787,3789,3791,3795,3797,3799,
	3803,3805,3807,3811,3813,3815,3819,3821,3823,3827,3829,3831,3833,3835,3837,3839,
	3843,3845,3847,3851,3853,3855,3859,3861,3863,3867,3869,3871,3875,3877,3879,3883,
	3885,3887,3891,3893,3895,3899,3901,3903,3907,3909,3911,3915,3917,3919,3923,3925,
	3927,3931,3933,3935,3939,3941,3943,3947,3949,3951,3955,3957,3959,3963,3965,3967,
	3971,3973,3975,3979,3981,3983,3987,3989,3991,3995,3997,3999,4003,4005,4007,4011,
	4013,4015,4019,4021,4023,4027,4029,4031,4035,4037,4039,4043,4045,4047,4051,4053,
	4055,4059,4061,4063,4067,4069,4071,4075,4077,4079,4083,4085,4087,4091,4093,4095,
	4099,4103,4107,4109,4111,4115,4117,4119,4123,4125,4127,4131,4133,4135,4139,4141,
	4143,4147,4149,4151,4155,4157,4159,4163,4165,4167,4171,4173,4175,4179,4181,4183,
	4187,4189,4191,4195,4197,4199,4203,4205,4207,4211,4213,4215,4219,4221,4223,4227,
	4231,4235,4237,4239,4243,4245,4247,4251,4253,4255,4259,4261,4263,4267,4269,4271,
	4275,4277,4279,4283,4285,4287,4291,4293,4295,4299,4301,4303,4307,4309,4311,4315,
	4317,4319,4323,4325,4327,4331,4333,4335,4339,4341,4343,4347,4349,4351,4355,4359,
	4363,4365,4367,4371,4373,4375,4379,4381,4383,4387,4389,4391,4395,4397,4399,4403,
	4405,4407,4411,4413,4415,4419,4423,4427,4429,4431,4435,4437,4439,4443,4445,4447,
	4451,4453,4455,4459,4461,4463,4467,4469,4471,4475,4477,4479,4483,4487,4491,4493,
	4495,4499,4501,4503,4507,4509,4511,4515,4517,4519,4523,4525,4527,4531,4533,4535,
	4539,4541,4543,4547,4551,4555,4557,4559,4563,4565,4567,4571,4573,4575,4579,4581,
	4583,4587,4589,4591,4595,4597,4599,4603,4605,4607,4611,4615,4619,4621,4623,4627,
	4629,4631,4635,4637,4639,4643,4647,4651,4653,4655,4659,4661,4663,4667,4669,4671,
	4675,4679,4683,4685,4687,4691,4693,4695,4699,4701,4703,4707,4709,4711,4715,4717,
	4719,4723,4725,4727,4731,4733,4735,4739,4743,4747,4749,4751,4755,4757,4759,4763,
	4765,4767,4771,4775,4779,4781,4783,4787,4789,4791,4795,4797,4799,4803,4807,4811,
	4813,4815,4819,4821,4823,4827,4829,4831,4835,4837,4839,4843,4845,4847,4851,4853,
	4855,4859,4861,4863,4867,4871,4875,4877,4879,4883,4885,4887,4891,4893,4895,4899,
	4903,4907,4909,4911,4915,4917,4919,4923,4925,4927,4931,4935,4939,4941,4943,4947,
	4949,4951,4955,4957,4959,4963,4967,4971,4973,4975,4979,4981,4983,4987,4989,4991,
	4995,4999,5003,5005,5007,5011,5013,5015,5019,5021,5023,5027,5031,5035,5037,5039,
	5043,5045,5047,5051,5053,5055,5059,5063,5067,5069,5071,5075,5077,5079,5083,5085,
	5087,5091,5095,5099,5101,5103,5107,5109,5111,5115,5117,5119,5123,5127,5131,5133,
	5135,5139,5143,5147,5149,5151,5155,5159,5163,5165,5167,5171,5173,5175,5179,5181,
	5183,5187,5191,5195,5197,5199,5203,5205,5207,5211,5213,5215,5219,5223,5227,5229,
	5231,5235,5237,5239,5243,5245,5247,5251,5255,5259,5261,5263,5267,5271,5275,5277,
	5279,5283,5287,5291,5293,5295,5299,5301,5303,5307,5309,5311,5315,5319,5323,5325,
	5327,5331,5333,5335,5339,5341,5343,5347,5351,5355,5357,5359,5363,5365,5367,5371,
	5373,5375,5379,5383,5387,5389,5391,5395,5399,5403,5405,5407,5411,5415,5419,5421,
	5423,5427,5429,5431,5435,5437,5439,5443,5447,5451,5453,5455,5459,5463,5467,5469,
	5471,5475,5479,5483,5485,5487,5491,5493,5495,5499,5501,5503,5507,5511,5515,5517,
	5519,5523,5527,5531,5533,5535,5539,5543,5547,5549,5551,5555,5557,5559,5563,5565,
	5567,5571,5575,5579,5581,5583,5587,5591,5595,5597,5599,5603,5607,5611,5613,5615,
	5619,5621,5623,5627,5629,5631,5635,5639,5643,5645,5647,5651,5655,5659,5661,5663,
	5667,5671,5675,5677,5679,5683,5687,5691,5693,5695,5699,5703,5707,5709,5711,5715,
	5719,5723,5725,5727,5731,5735,5739,5741,5743,5747,5749,5751,5755,5757,5759,5763,
	5767,5771,5773,5775,5779,5783,5787,5789,5791,5795,5799,5803,5805,5807,5811,5815,
	5819,5821,5823,5827,5831,5835,5837,5839,5843,5847,5851,5853,5855,5859,5863,5867,
	5869,5871,5875,5877,5879,5883,5885,5887,5891,5895,5899,5901,5903,5907,5911,5915,
	5917,5919,5923,5927,5931,5933,5935,5939,5943,5947,5949,5951,5955,5959,5963,5965,
	5967,5971,5975,5979,5981,5983,5987,5991,5995,5997,5999,6003,6007,6011,6013,6015,
	6019,6023,6027,6029,6031,6035,6039,6043,6045,6047,6051,6055,6059,6061,6063,6067,
	6071,6075,6077,6079,6083,6087,6091,6093,6095,6099,6103,6107,6109,6111,6115,6119,
	6123,6125,6127,6131,6135,6139,6141,6143,6147,6151,6155,6159,6163,6167,6171,6173,
	6175,6179,6183,6187,6189,6191,6195,6199,6203,6205,6207,6211,6215,6219,6221,6223,
	6227,6231,6235,6237,6239,6243,6247,6251,6253,6255,6259,6263,6267,6269,6271,6275,
	6279,6283,6287,6291,6295,6299,6301,6303,6307,6311,6315,6317,6319,6323,6327,6331,
	6333,6335,6339,6343,6347,6349,6351,6355,6359,6363,6365,6367,6371,6375,6379,6381,
	6383,6387,6391,6395,6397,6399,6403,6407,6411,6415,6419,6423,6427,6429,6431,6435,
	6439,6443,6445,6447,6451,6455,6459,6461,6463,6467,6471,6475,6479,6483,6487,6491,
	6493,6495,6499,6503,6507,6509,6511,6515,6519,6523,6525,6527,6531,6535,6539,6543,
	6547,6551,6555,6557,6559,6563,6567,6571,6573,6575,6579,6583,6587,6589,6591,6595,
	6599,6603,6607,6611,6615,6619,6621,6623,6627,6631,6635,6637,6639,6643,6647,6651,
	6653,6655,6659,6663,6667,6671,6675,6679,6683,6685,6687,6691,6695,6699,6703,6707,
	6711,6715,6717,6719,6723,6727,6731,6735,6739,6743,6747,6749,6751,6755,6759,6763,
	6765,6767,6771,6775,6779,6781,6783,6787,6791,6795,6799,6803,6807,6811,6813,6815,
	6819,6823,6827,6831,6835,6839,6843,6845,6847,6851,6855,6859,6863,6867,6871,6875,
	6877,6879,6883,6887,6891,6893,6895,6899,6903,6907,6909,6911,6915,6919,6923,6927,
	6931,6935,6939,6941,6943,6947,6951,6955,6959,6963,6967,6971,6973,6975,6979,6983,
	6987,6991,6995,6999,7003,7005,7007,7011,7015,7019,7023,7027,7031,7035,7037,7039,
	7043,7047,7051,7055,7059,7063,7067,7069,7071,7075,7079,7083,7087,7091,7095,7099,
	7101,7103,7107,7111,7115,7119,7123,7127,7131,7133,7135,7139,7143,7147,7151,7155,
	7159,7163,7165,7167,7171,7175,7179,7183,7187,7191,7195,7199,7203,7207,7211,7215,
	7219,7223,7227,7229,7231,7235,7239,7243,7247,7251,7255,7259,7261,7263,7267,7271,
	7275,7279,7283,7287,7291,7293,7295,7299,7303,7307,7311,7315,7319,7323,7327,7331,
	7335,7339,7343,7347,7351,7355,7357,7359,7363,7367,7371,7375,7379,7383,7387,7389,
	7391,7395,7399,7403,7407,7411,7415,7419,7421,7423,7427,7431,7435,7439,7443,7447,
	7451,7455,7459,7463,7467,7471,7475,7479,7483,7485,7487,7491,7495,7499,7503,7507,
	7511,7515,7519,7523,7527,7531,7535,7539,7543,7547,7549,7551,7555,7559,7563,7567,
	7571,7575,7579,7583,7587,7591,7595,7599,7603,7607,7611,7613,7615,7619,7623,7627,
	7631,7635,7639,7643,7647,7651,7655,7659,7663,7667,7671,7675,7677,7679,7683,7687,
	7691,7695,7699,7703,7707,7711,7715,7719,7723,7727,7731,7735,7739,7743,7747,7751,
	7755,7759,7763,7767,7771,7775,7779,7783,7787,7791,7795,7799,7803,7805,7807,7811,
	7815,7819,7823,7827,7831,7835,7839,7843,7847,7851,7855,7859,7863,7867,7871,7875,
	7879,7883,7887,7891,7895,7899,7903,7907,7911,7915,7919,7923,7927,7931,7933,7935,
	7939,7943,7947,7951,7955,7959,7963,7967,7971,7975,7979,7983,7987,7991,7995,7999,
	8003,8007,8011,8015,8019,8023,8027,8031,8035,8039,8043,8047,8051,8055,8059,8063,
	8067,8071,8075,8079,8083,8087,8091,8095,8099,8103,8107,8111,8115,8119,8123,8127,
	8131,8135,8139,8143,8147,8151,8155,8159,8163,8167,8171,8175,8179,8183,8187,8191,
	8199,8203,8207,8211,8215,8219,8223,8227,8231,8235,8239,8243,8247,8251,8255,8259,
	8263,8267,8271,8275,8279,8283,8287,8291,8295,8299,8303,8307,8311,8315,8319,8327,
	8331,8335,8339,8343,8347,8351,8355,8359,8363,8367,8371,8375,8379,8383,8387,8391,
	8395,8399,8403,8407,8411,8415,8419,8423,8427,8431,8435,8439,8443,8447,8455,8459,
	8463,8467,8471,8475,8479,8483,8487,8491,8495,8499,8503,8507,8511,8519,8523,8527,
	8531,8535,8539,8543,8547,8551,8555,8559,8563,8567,8571,8575,8583,8587,8591,8595,
	8599,8603,8607,8611,8615,8619,8623,8627,8631,8635,8639,8647,8651,8655,8659,8663,
	8667,8671,8675,8679,8683,8687,8691,8695,8699,8703,8711,8715,8719,8723,8727,8731,
	8735,8743,8747,8751,8755,8759,8763,8767,8775,8779,8783,8787,8791,8795,8799,8803,
	8807,8811,8815,8819,8823,8827,8831,8839,8843,8847,8851,8855,8859,8863,8871,8875,
	8879,8883,8887,8891,8895,8903,8907,8911,8915,8919,8923,8927,8931,8935,8939,8943,
	8947,8951,8955,8959,8967,8971,8975,8979,8983,8987,8991,8999,9003,9007,9011,9015,
	9019,9023,9031,9035,9039,9043,9047,9051,9055,9063,9067,9071,9075,9079,9083,9087,
	9095,9099,9103,9107,9111,9115,9119,9127,9131,9135,9139,9143,9147,9151,9159,9163,
	9167,9171,9175,9179,9183,9191,9195,9199,9203,9207,9211,9215,9223,9227,9231,9239,
	9243,9247,9255,9259,9263,9267,9271,9275,9279,9287,9291,9295,9299,9303,9307,9311,
	9319,9323,9327,9331,9335,9339,9343,9351,9355,9359,9367,9371,9375,9383,9387,9391,
	9395,9399,9403,9407,9415,9419,9423,9427,9431,9435,9439,9447,9451,9455,9459,9463,
	9467,9471,9479,9483,9487,9495,9499,9503,9511,9515,9519,9523,9527,9531,9535,9543,
	9547,9551,9559,9563,9567,9575,9579,9583,9587,9591,9595,9599,9607,9611,9615,9623,
	9627,9631,9639,9643,9647,9651,9655,9659,9663,9671,9675,9679,9687,9691,9695,9703,
	9707,9711,9715,9719,9723,9727,9735,9739,9743,9751,9755,9759,9767,9771,9775,9783,
	9787,9791,9799,9803,9807,9815,9819,9823,9831,9835,9839,9843,9847,9851,9855,9863,
	9867,9871,9879,9883,9887,9895,9899,9903,9911,9915,9919,9927,9931,9935,9943,9947,
	9951,9959,9963,9967,9971,9975,9979,9983,9991,9995,9999,10007,10011,10015,10023,10027,
	10031,10039,10043,10047,10055,10059,10063,10071,10075,10079,10087,10091,10095,10103,10107,10111,
	10119,10123,10127,10135,10139,10143,10151,10155,10159,10167,10171,10175,10183,10187,10191,10199,
	10203,10207,10215,10219,10223,10231,10235,10239,10247,10255,10263,10267,10271,10279,10283,10287,
	10295,10299,10303,10311,10315,10319,10327,10331,10335,10343,10347,10351,10359,10363,10367,10375,
	10383,10391,10395,10399,10407,10411,10415,10423,10427,10431,10439,10443,10447,10455,10459,10463,
	10471,10475,10479,10487,10491,10495,10503,10511,10519,10523,10527,10535,10539,10543,10551,10555,
	10559,10567,10575,10583,10587,10591,10599,10603,10607,10615,10619,10623,10631,10639,10647,10651,
	10655,10663,10667,10671,10679,10683,10687,10695,10703,10711,10715,10719,10727,10731,10735,10743,
	10747,10751,10759,10767,10775,10779,10783,10791,10799,10807,10811,10815,10823,10831,10839,10843,
	10847,10855,10859,10863,10871,10875,10879,10887,10895,10903,10907,10911,10919,10927,10935,10939,
	10943,10951,10959,10967,10971,10975,10983,10987,10991,10999,11003,11007,11015,11023,11031,11035,
	11039,11047,11055,11063,11067,11071,11079,11087,11095,11099,11103,11111,11119,11127,11131,11135,
	11143,11151,11159,11163,11167,11175,11183,11191,11195,11199,11207,11215,11223,11227,11231,11239,
	11247,11255,11259,11263,11271,11279,11287,11295,11303,11311,11319,11323,11327,11335,11343,11351,
	11355,11359,11367,11375,11383,11387,11391,11399,11407,11415,11423,11431,11439,11447,11451,11455,
	11463,11471,11479,11483,11487,11495,11503,11511,11515,11519,11527,11535,11543,11551,11559,11567,
	11575,11579,11583,11591,11599,11607,11615,11623,11631,11639,11643,11647,11655,11663,11671,11679,
	11687,11695,11703,11707,11711,11719,11727,11735,11743,11751,11759,11767,11771,11775,11783,11791,
	11799,11807,11815,11823,11831,11839,11847,11855,11863,11871,11879,11887,11895,11899,11903,11911,
	11919,11927,11935,11943,11951,11959,11967,11975,11983,11991,11999,12007,12015,12023,12027,12031,
	12039,12047,12055,12063,12071,12079,12087,12095,12103,12111,12119,12127,12135,12143,12151,12159,
	12167,12175,12183,12191,12199,12207,12215,12223,12231,12239,12247,12255,12263,12271,12279,12287,
	12303,12311,12319,12327,12335,12343,12351,12359,12367,12375,12383,12391,12399,12407,12415,12431,
	12439,12447,12455,12463,12471,12479,12487,12495,12503,12511,12519,12527,12535,12543,12559,12567,
	12575,12583,12591,12599,12607,12623,12631,12639,12647,12655,12663,12671,12687,12695,12703,12711,
	12719,12727,12735,12751,12759,12767,12775,12783,12791,12799,12815,12823,12831,12847,12855,12863,
	12879,12887,12895,12903,12911,12919,12927,12943,12951,12959,12975,12983,12991,13007,13015,13023,
	13031,13039,13047,13055,13071,13079,13087,13103,13111,13119,13135,13143,13151,13167,13175,13183,
	13199,13207,13215,13231,13239,13247,13263,13271,13279,13295,13303,13311,13327,13343,13359,13367,
	13375,13391,13399,13407,13423,13431,13439,13455,13471,13487,13495,13503,13519,13527,13535,13551,
	13559,13567,13583,13599,13615,13623,13631,13647,13663,13679,13687,13695,13711,13727,13743,13751,
	13759,13775,13791,13807,13815,13823,13839,13855,13871,13887,13903,13919,13935,13943,13951,13967,
	13983,13999,14015,14031,14047,14063,14071,14079,14095,14111,14127,14143,14159,14175,14191,14207,
	14223,14239,14255,14271,14287,14303,14319,14335,14367,14383,14399,14415,14431,14447,14463,14495,
	14511,14527,14543,14559,14575,14591,14623,14639,14655,14687,14703,14719,14751,14767,14783,14815,
	14831,14847,14879,14911,14943,14959,14975,15007,15039,15071,15087,15103,15135,15167,15199,15231,
	15263,15295,15327,15359,15423,15455,15487,15551,15583,15615,15679,15743,15807,15871,15999,16127	};

	const size_t xbitrev::jndx8192[4032]= {
	8193,4097,12289,2049,10241,6145,14337,1025,9217,5121,13313,3073,11265,7169,15361, 513,
	8705,4609,12801,2561,10753,6657,14849,1537,9729,5633,13825,3585,11777,7681,15873, 257,
	8449,4353,12545,2305,10497,6401,14593,1281,9473,5377,13569,3329,11521,7425,15617, 769,
	8961,4865,13057,2817,11009,6913,15105,1793,9985,5889,14081,3841,12033,7937,16129,8321,
	4225,12417,2177,10369,6273,14465,1153,9345,5249,13441,3201,11393,7297,15489, 641,8833,
	4737,12929,2689,10881,6785,14977,1665,9857,5761,13953,3713,11905,7809,16001, 385,8577,
	4481,12673,2433,10625,6529,14721,1409,9601,5505,13697,3457,11649,7553,15745, 897,9089,
	4993,13185,2945,11137,7041,15233,1921,10113,6017,14209,3969,12161,8065,16257,8257,4161,
	12353,2113,10305,6209,14401,1089,9281,5185,13377,3137,11329,7233,15425, 577,8769,4673,
	12865,2625,10817,6721,14913,1601,9793,5697,13889,3649,11841,7745,15937,8513,4417,12609,
	2369,10561,6465,14657,1345,9537,5441,13633,3393,11585,7489,15681, 833,9025,4929,13121,
	2881,11073,6977,15169,1857,10049,5953,14145,3905,12097,8001,16193,8385,4289,12481,2241,
	10433,6337,14529,1217,9409,5313,13505,3265,11457,7361,15553, 705,8897,4801,12993,2753,
	10945,6849,15041,1729,9921,5825,14017,3777,11969,7873,16065,8641,4545,12737,2497,10689,
	6593,14785,1473,9665,5569,13761,3521,11713,7617,15809, 961,9153,5057,13249,3009,11201,
	7105,15297,1985,10177,6081,14273,4033,12225,8129,16321,8225,4129,12321,2081,10273,6177,
	14369,1057,9249,5153,13345,3105,11297,7201,15393,8737,4641,12833,2593,10785,6689,14881,
	1569,9761,5665,13857,3617,11809,7713,15905,8481,4385,12577,2337,10529,6433,14625,1313,
	9505,5409,13601,3361,11553,7457,15649, 801,8993,4897,13089,2849,11041,6945,15137,1825,
	10017,5921,14113,3873,12065,7969,16161,8353,4257,12449,2209,10401,6305,14497,1185,9377,
	5281,13473,3233,11425,7329,15521,8865,4769,12961,2721,10913,6817,15009,1697,9889,5793,
	13985,3745,11937,7841,16033,8609,4513,12705,2465,10657,6561,14753,1441,9633,5537,13729,
	3489,11681,7585,15777, 929,9121,5025,13217,2977,11169,7073,15265,1953,10145,6049,14241,
	4001,12193,8097,16289,8289,4193,12385,2145,10337,6241,14433,1121,9313,5217,13409,3169,
	11361,7265,15457,8801,4705,12897,2657,10849,6753,14945,1633,9825,5729,13921,3681,11873,
	7777,15969,8545,4449,12641,2401,10593,6497,14689,1377,9569,5473,13665,3425,11617,7521,
	15713,9057,4961,13153,2913,11105,7009,15201,1889,10081,5985,14177,3937,12129,8033,16225,
	8417,4321,12513,2273,10465,6369,14561,1249,9441,5345,13537,3297,11489,7393,15585,8929,
	4833,13025,2785,10977,6881,15073,1761,9953,5857,14049,3809,12001,7905,16097,8673,4577,
	12769,2529,10721,6625,14817,1505,9697,5601,13793,3553,11745,7649,15841,9185,5089,13281,
	3041,11233,7137,15329,2017,10209,6113,14305,4065,12257,8161,16353,8209,4113,12305,2065,
	10257,6161,14353,9233,5137,13329,3089,11281,7185,15377,8721,4625,12817,2577,10769,6673,
	14865,1553,9745,5649,13841,3601,11793,7697,15889,8465,4369,12561,2321,10513,6417,14609,
	1297,9489,5393,13585,3345,11537,7441,15633,8977,4881,13073,2833,11025,6929,15121,1809,
	10001,5905,14097,3857,12049,7953,16145,8337,4241,12433,2193,10385,6289,14481,9361,5265,
	13457,3217,11409,7313,15505,8849,4753,12945,2705,10897,6801,14993,1681,9873,5777,13969,
	3729,11921,7825,16017,8593,4497,12689,2449,10641,6545,14737,1425,9617,5521,13713,3473,
	11665,7569,15761,9105,5009,13201,2961,11153,7057,15249,1937,10129,6033,14225,3985,12177,
	8081,16273,8273,4177,12369,2129,10321,6225,14417,9297,5201,13393,3153,11345,7249,15441,
	8785,4689,12881,2641,10833,6737,14929,1617,9809,5713,13905,3665,11857,7761,15953,8529,
	4433,12625,2385,10577,6481,14673,9553,5457,13649,3409,11601,7505,15697,9041,4945,13137,
	2897,11089,6993,15185,1873,10065,5969,14161,3921,12113,8017,16209,8401,4305,12497,2257,
	10449,6353,14545,9425,5329,13521,3281,11473,7377,15569,8913,4817,13009,2769,10961,6865,
	15057,1745,9937,5841,14033,3793,11985,7889,16081,8657,4561,12753,2513,10705,6609,14801,
	9681,5585,13777,3537,11729,7633,15825,9169,5073,13265,3025,11217,7121,15313,2001,10193,
	6097,14289,4049,12241,8145,16337,8241,4145,12337,2097,10289,6193,14385,9265,5169,13361,
	3121,11313,7217,15409,8753,4657,12849,2609,10801,6705,14897,9777,5681,13873,3633,11825,
	7729,15921,8497,4401,12593,2353,10545,6449,14641,9521,5425,13617,3377,11569,7473,15665,
	9009,4913,13105,2865,11057,6961,15153,1841,10033,5937,14129,3889,12081,7985,16177,8369,
	4273,12465,2225,10417,6321,14513,9393,5297,13489,3249,11441,7345,15537,8881,4785,12977,
	2737,10929,6833,15025,9905,5809,14001,3761,11953,7857,16049,8625,4529,12721,2481,10673,
	6577,14769,9649,5553,13745,3505,11697,7601,15793,9137,5041,13233,2993,11185,7089,15281,
	1969,10161,6065,14257,4017,12209,8113,16305,8305,4209,12401,2161,10353,6257,14449,9329,
	5233,13425,3185,11377,7281,15473,8817,4721,12913,2673,10865,6769,14961,9841,5745,13937,
	3697,11889,7793,15985,8561,4465,12657,2417,10609,6513,14705,9585,5489,13681,3441,11633,
	7537,15729,9073,4977,13169,2929,11121,7025,15217,10097,6001,14193,3953,12145,8049,16241,
	8433,4337,12529,2289,10481,6385,14577,9457,5361,13553,3313,11505,7409,15601,8945,4849,
	13041,2801,10993,6897,15089,9969,5873,14065,3825,12017,7921,16113,8689,4593,12785,2545,
	10737,6641,14833,9713,5617,13809,3569,11761,7665,15857,9201,5105,13297,3057,11249,7153,
	15345,10225,6129,14321,4081,12273,8177,16369,8201,4105,12297,10249,6153,14345,9225,5129,
	13321,3081,11273,7177,15369,8713,4617,12809,2569,10761,6665,14857,9737,5641,13833,3593,
	11785,7689,15881,8457,4361,12553,2313,10505,6409,14601,9481,5385,13577,3337,11529,7433,
	15625,8969,4873,13065,2825,11017,6921,15113,9993,5897,14089,3849,12041,7945,16137,8329,
	4233,12425,10377,6281,14473,9353,5257,13449,3209,11401,7305,15497,8841,4745,12937,2697,
	10889,6793,14985,9865,5769,13961,3721,11913,7817,16009,8585,4489,12681,2441,10633,6537,
	14729,9609,5513,13705,3465,11657,7561,15753,9097,5001,13193,2953,11145,7049,15241,10121,
	6025,14217,3977,12169,8073,16265,8265,4169,12361,10313,6217,14409,9289,5193,13385,3145,
	11337,7241,15433,8777,4681,12873,2633,10825,6729,14921,9801,5705,13897,3657,11849,7753,
	15945,8521,4425,12617,10569,6473,14665,9545,5449,13641,3401,11593,7497,15689,9033,4937,
	13129,2889,11081,6985,15177,10057,5961,14153,3913,12105,8009,16201,8393,4297,12489,10441,
	6345,14537,9417,5321,13513,3273,11465,7369,15561,8905,4809,13001,2761,10953,6857,15049,
	9929,5833,14025,3785,11977,7881,16073,8649,4553,12745,10697,6601,14793,9673,5577,13769,
	3529,11721,7625,15817,9161,5065,13257,3017,11209,7113,15305,10185,6089,14281,4041,12233,
	8137,16329,8233,4137,12329,10281,6185,14377,9257,5161,13353,3113,11305,7209,15401,8745,
	4649,12841,10793,6697,14889,9769,5673,13865,3625,11817,7721,15913,8489,4393,12585,10537,
	6441,14633,9513,5417,13609,3369,11561,7465,15657,9001,4905,13097,2857,11049,6953,15145,
	10025,5929,14121,3881,12073,7977,16169,8361,4265,12457,10409,6313,14505,9385,5289,13481,
	3241,11433,7337,15529,8873,4777,12969,10921,6825,15017,9897,5801,13993,3753,11945,7849,
	16041,8617,4521,12713,10665,6569,14761,9641,5545,13737,3497,11689,7593,15785,9129,5033,
	13225,2985,11177,7081,15273,10153,6057,14249,4009,12201,8105,16297,8297,4201,12393,10345,
	6249,14441,9321,5225,13417,3177,11369,7273,15465,8809,4713,12905,10857,6761,14953,9833,
	5737,13929,3689,11881,7785,15977,8553,4457,12649,10601,6505,14697,9577,5481,13673,3433,
	11625,7529,15721,9065,4969,13161,11113,7017,15209,10089,5993,14185,3945,12137,8041,16233,
	8425,4329,12521,10473,6377,14569,9449,5353,13545,3305,11497,7401,15593,8937,4841,13033,
	10985,6889,15081,9961,5865,14057,3817,12009,7913,16105,8681,4585,12777,10729,6633,14825,
	9705,5609,13801,3561,11753,7657,15849,9193,5097,13289,11241,7145,15337,10217,6121,14313,
	4073,12265,8169,16361,8217,4121,12313,10265,6169,14361,9241,5145,13337,11289,7193,15385,
	8729,4633,12825,10777,6681,14873,9753,5657,13849,3609,11801,7705,15897,8473,4377,12569,
	10521,6425,14617,9497,5401,13593,3353,11545,7449,15641,8985,4889,13081,11033,6937,15129,
	10009,5913,14105,3865,12057,7961,16153,8345,4249,12441,10393,6297,14489,9369,5273,13465,
	11417,7321,15513,8857,4761,12953,10905,6809,15001,9881,5785,13977,3737,11929,7833,16025,
	8601,4505,12697,10649,6553,14745,9625,5529,13721,3481,11673,7577,15769,9113,5017,13209,
	11161,7065,15257,10137,6041,14233,3993,12185,8089,16281,8281,4185,12377,10329,6233,14425,
	9305,5209,13401,11353,7257,15449,8793,4697,12889,10841,6745,14937,9817,5721,13913,3673,
	11865,7769,15961,8537,4441,12633,10585,6489,14681,9561,5465,13657,11609,7513,15705,9049,
	4953,13145,11097,7001,15193,10073,5977,14169,3929,12121,8025,16217,8409,4313,12505,10457,
	6361,14553,9433,5337,13529,11481,7385,15577,8921,4825,13017,10969,6873,15065,9945,5849,
	14041,3801,11993,7897,16089,8665,4569,12761,10713,6617,14809,9689,5593,13785,11737,7641,
	15833,9177,5081,13273,11225,7129,15321,10201,6105,14297,4057,12249,8153,16345,8249,4153,
	12345,10297,6201,14393,9273,5177,13369,11321,7225,15417,8761,4665,12857,10809,6713,14905,
	9785,5689,13881,11833,7737,15929,8505,4409,12601,10553,6457,14649,9529,5433,13625,11577,
	7481,15673,9017,4921,13113,11065,6969,15161,10041,5945,14137,3897,12089,7993,16185,8377,
	4281,12473,10425,6329,14521,9401,5305,13497,11449,7353,15545,8889,4793,12985,10937,6841,
	15033,9913,5817,14009,11961,7865,16057,8633,4537,12729,10681,6585,14777,9657,5561,13753,
	11705,7609,15801,9145,5049,13241,11193,7097,15289,10169,6073,14265,4025,12217,8121,16313,
	8313,4217,12409,10361,6265,14457,9337,5241,13433,11385,7289,15481,8825,4729,12921,10873,
	6777,14969,9849,5753,13945,11897,7801,15993,8569,4473,12665,10617,6521,14713,9593,5497,
	13689,11641,7545,15737,9081,4985,13177,11129,7033,15225,10105,6009,14201,12153,8057,16249,
	8441,4345,12537,10489,6393,14585,9465,5369,13561,11513,7417,15609,8953,4857,13049,11001,
	6905,15097,9977,5881,14073,12025,7929,16121,8697,4601,12793,10745,6649,14841,9721,5625,
	13817,11769,7673,15865,9209,5113,13305,11257,7161,15353,10233,6137,14329,12281,8185,16377,
	8197,12293,10245,6149,14341,9221,5125,13317,11269,7173,15365,8709,4613,12805,10757,6661,
	14853,9733,5637,13829,11781,7685,15877,8453,4357,12549,10501,6405,14597,9477,5381,13573,
	11525,7429,15621,8965,4869,13061,11013,6917,15109,9989,5893,14085,12037,7941,16133,8325,
	12421,10373,6277,14469,9349,5253,13445,11397,7301,15493,8837,4741,12933,10885,6789,14981,
	9861,5765,13957,11909,7813,16005,8581,4485,12677,10629,6533,14725,9605,5509,13701,11653,
	7557,15749,9093,4997,13189,11141,7045,15237,10117,6021,14213,12165,8069,16261,8261,12357,
	10309,6213,14405,9285,5189,13381,11333,7237,15429,8773,4677,12869,10821,6725,14917,9797,
	5701,13893,11845,7749,15941,8517,12613,10565,6469,14661,9541,5445,13637,11589,7493,15685,
	9029,4933,13125,11077,6981,15173,10053,5957,14149,12101,8005,16197,8389,12485,10437,6341,
	14533,9413,5317,13509,11461,7365,15557,8901,4805,12997,10949,6853,15045,9925,5829,14021,
	11973,7877,16069,8645,12741,10693,6597,14789,9669,5573,13765,11717,7621,15813,9157,5061,
	13253,11205,7109,15301,10181,6085,14277,12229,8133,16325,8229,12325,10277,6181,14373,9253,
	5157,13349,11301,7205,15397,8741,12837,10789,6693,14885,9765,5669,13861,11813,7717,15909,
	8485,12581,10533,6437,14629,9509,5413,13605,11557,7461,15653,8997,4901,13093,11045,6949,
	15141,10021,5925,14117,12069,7973,16165,8357,12453,10405,6309,14501,9381,5285,13477,11429,
	7333,15525,8869,12965,10917,6821,15013,9893,5797,13989,11941,7845,16037,8613,12709,10661,
	6565,14757,9637,5541,13733,11685,7589,15781,9125,5029,13221,11173,7077,15269,10149,6053,
	14245,12197,8101,16293,8293,12389,10341,6245,14437,9317,5221,13413,11365,7269,15461,8805,
	12901,10853,6757,14949,9829,5733,13925,11877,7781,15973,8549,12645,10597,6501,14693,9573,
	5477,13669,11621,7525,15717,9061,13157,11109,7013,15205,10085,5989,14181,12133,8037,16229,
	8421,12517,10469,6373,14565,9445,5349,13541,11493,7397,15589,8933,13029,10981,6885,15077,
	9957,5861,14053,12005,7909,16101,8677,12773,10725,6629,14821,9701,5605,13797,11749,7653,
	15845,9189,13285,11237,7141,15333,10213,6117,14309,12261,8165,16357,8213,12309,10261,6165,
	14357,9237,13333,11285,7189,15381,8725,12821,10773,6677,14869,9749,5653,13845,11797,7701,
	15893,8469,12565,10517,6421,14613,9493,5397,13589,11541,7445,15637,8981,13077,11029,6933,
	15125,10005,5909,14101,12053,7957,16149,8341,12437,10389,6293,14485,9365,13461,11413,7317,
	15509,8853,12949,10901,6805,14997,9877,5781,13973,11925,7829,16021,8597,12693,10645,6549,
	14741,9621,5525,13717,11669,7573,15765,9109,13205,11157,7061,15253,10133,6037,14229,12181,
	8085,16277,8277,12373,10325,6229,14421,9301,13397,11349,7253,15445,8789,12885,10837,6741,
	14933,9813,5717,13909,11861,7765,15957,8533,12629,10581,6485,14677,9557,13653,11605,7509,
	15701,9045,13141,11093,6997,15189,10069,5973,14165,12117,8021,16213,8405,12501,10453,6357,
	14549,9429,13525,11477,7381,15573,8917,13013,10965,6869,15061,9941,5845,14037,11989,7893,
	16085,8661,12757,10709,6613,14805,9685,13781,11733,7637,15829,9173,13269,11221,7125,15317,
	10197,6101,14293,12245,8149,16341,8245,12341,10293,6197,14389,9269,13365,11317,7221,15413,
	8757,12853,10805,6709,14901,9781,13877,11829,7733,15925,8501,12597,10549,6453,14645,9525,
	13621,11573,7477,15669,9013,13109,11061,6965,15157,10037,5941,14133,12085,7989,16181,8373,
	12469,10421,6325,14517,9397,13493,11445,7349,15541,8885,12981,10933,6837,15029,9909,14005,
	11957,7861,16053,8629,12725,10677,6581,14773,9653,13749,11701,7605,15797,9141,13237,11189,
	7093,15285,10165,6069,14261,12213,8117,16309,8309,12405,10357,6261,14453,9333,13429,11381,
	7285,15477,8821,12917,10869,6773,14965,9845,13941,11893,7797,15989,8565,12661,10613,6517,
	14709,9589,13685,11637,7541,15733,9077,13173,11125,7029,15221,10101,14197,12149,8053,16245,
	8437,12533,10485,6389,14581,9461,13557,11509,7413,15605,8949,13045,10997,6901,15093,9973,
	14069,12021,7925,16117,8693,12789,10741,6645,14837,9717,13813,11765,7669,15861,9205,13301,
	11253,7157,15349,10229,14325,12277,8181,16373,8205,12301,10253,14349,9229,13325,11277,7181,
	15373,8717,12813,10765,6669,14861,9741,13837,11789,7693,15885,8461,12557,10509,6413,14605,
	9485,13581,11533,7437,15629,8973,13069,11021,6925,15117,9997,14093,12045,7949,16141,8333,
	12429,10381,14477,9357,13453,11405,7309,15501,8845,12941,10893,6797,14989,9869,13965,11917,
	7821,16013,8589,12685,10637,6541,14733,9613,13709,11661,7565,15757,9101,13197,11149,7053,
	15245,10125,14221,12173,8077,16269,8269,12365,10317,14413,9293,13389,11341,7245,15437,8781,
	12877,10829,6733,14925,9805,13901,11853,7757,15949,8525,12621,10573,14669,9549,13645,11597,
	7501,15693,9037,13133,11085,6989,15181,10061,14157,12109,8013,16205,8397,12493,10445,14541,
	9421,13517,11469,7373,15565,8909,13005,10957,6861,15053,9933,14029,11981,7885,16077,8653,
	12749,10701,14797,9677,13773,11725,7629,15821,9165,13261,11213,7117,15309,10189,14285,12237,
	8141,16333,8237,12333,10285,14381,9261,13357,11309,7213,15405,8749,12845,10797,14893,9773,
	13869,11821,7725,15917,8493,12589,10541,14637,9517,13613,11565,7469,15661,9005,13101,11053,
	6957,15149,10029,14125,12077,7981,16173,8365,12461,10413,14509,9389,13485,11437,7341,15533,
	8877,12973,10925,15021,9901,13997,11949,7853,16045,8621,12717,10669,14765,9645,13741,11693,
	7597,15789,9133,13229,11181,7085,15277,10157,14253,12205,8109,16301,8301,12397,10349,14445,
	9325,13421,11373,7277,15469,8813,12909,10861,14957,9837,13933,11885,7789,15981,8557,12653,
	10605,14701,9581,13677,11629,7533,15725,9069,13165,11117,15213,10093,14189,12141,8045,16237,
	8429,12525,10477,14573,9453,13549,11501,7405,15597,8941,13037,10989,15085,9965,14061,12013,
	7917,16109,8685,12781,10733,14829,9709,13805,11757,7661,15853,9197,13293,11245,15341,10221,
	14317,12269,8173,16365,8221,12317,10269,14365,9245,13341,11293,15389,8733,12829,10781,14877,
	9757,13853,11805,7709,15901,8477,12573,10525,14621,9501,13597,11549,7453,15645,8989,13085,
	11037,15133,10013,14109,12061,7965,16157,8349,12445,10397,14493,9373,13469,11421,15517,8861,
	12957,10909,15005,9885,13981,11933,7837,16029,8605,12701,10653,14749,9629,13725,11677,7581,
	15773,9117,13213,11165,15261,10141,14237,12189,8093,16285,8285,12381,10333,14429,9309,13405,
	11357,15453,8797,12893,10845,14941,9821,13917,11869,7773,15965,8541,12637,10589,14685,9565,
	13661,11613,15709,9053,13149,11101,15197,10077,14173,12125,8029,16221,8413,12509,10461,14557,
	9437,13533,11485,15581,8925,13021,10973,15069,9949,14045,11997,7901,16093,8669,12765,10717,
	14813,9693,13789,11741,15837,9181,13277,11229,15325,10205,14301,12253,8157,16349,8253,12349,
	10301,14397,9277,13373,11325,15421,8765,12861,10813,14909,9789,13885,11837,15933,8509,12605,
	10557,14653,9533,13629,11581,15677,9021,13117,11069,15165,10045,14141,12093,7997,16189,8381,
	12477,10429,14525,9405,13501,11453,15549,8893,12989,10941,15037,9917,14013,11965,16061,8637,
	12733,10685,14781,9661,13757,11709,15805,9149,13245,11197,15293,10173,14269,12221,8125,16317,
	8317,12413,10365,14461,9341,13437,11389,15485,8829,12925,10877,14973,9853,13949,11901,15997,
	8573,12669,10621,14717,9597,13693,11645,15741,9085,13181,11133,15229,10109,14205,12157,16253,
	8445,12541,10493,14589,9469,13565,11517,15613,8957,13053,11005,15101,9981,14077,12029,16125,
	8701,12797,10749,14845,9725,13821,11773,15869,9213,13309,11261,15357,10237,14333,12285,16381,
	12291,10243,14339,9219,13315,11267,15363,8707,12803,10755,14851,9731,13827,11779,15875,8451,
	12547,10499,14595,9475,13571,11523,15619,8963,13059,11011,15107,9987,14083,12035,16131,12419,
	10371,14467,9347,13443,11395,15491,8835,12931,10883,14979,9859,13955,11907,16003,8579,12675,
	10627,14723,9603,13699,11651,15747,9091,13187,11139,15235,10115,14211,12163,16259,12355,10307,
	14403,9283,13379,11331,15427,8771,12867,10819,14915,9795,13891,11843,15939,12611,10563,14659,
	9539,13635,11587,15683,9027,13123,11075,15171,10051,14147,12099,16195,12483,10435,14531,9411,
	13507,11459,15555,8899,12995,10947,15043,9923,14019,11971,16067,12739,10691,14787,9667,13763,
	11715,15811,9155,13251,11203,15299,10179,14275,12227,16323,12323,10275,14371,9251,13347,11299,
	15395,12835,10787,14883,9763,13859,11811,15907,12579,10531,14627,9507,13603,11555,15651,8995,
	13091,11043,15139,10019,14115,12067,16163,12451,10403,14499,9379,13475,11427,15523,12963,10915,
	15011,9891,13987,11939,16035,12707,10659,14755,9635,13731,11683,15779,9123,13219,11171,15267,
	10147,14243,12195,16291,12387,10339,14435,9315,13411,11363,15459,12899,10851,14947,9827,13923,
	11875,15971,12643,10595,14691,9571,13667,11619,15715,13155,11107,15203,10083,14179,12131,16227,
	12515,10467,14563,9443,13539,11491,15587,13027,10979,15075,9955,14051,12003,16099,12771,10723,
	14819,9699,13795,11747,15843,13283,11235,15331,10211,14307,12259,16355,12307,10259,14355,13331,
	11283,15379,12819,10771,14867,9747,13843,11795,15891,12563,10515,14611,9491,13587,11539,15635,
	13075,11027,15123,10003,14099,12051,16147,12435,10387,14483,13459,11411,15507,12947,10899,14995,
	9875,13971,11923,16019,12691,10643,14739,9619,13715,11667,15763,13203,11155,15251,10131,14227,
	12179,16275,12371,10323,14419,13395,11347,15443,12883,10835,14931,9811,13907,11859,15955,12627,
	10579,14675,13651,11603,15699,13139,11091,15187,10067,14163,12115,16211,12499,10451,14547,13523,
	11475,15571,13011,10963,15059,9939,14035,11987,16083,12755,10707,14803,13779,11731,15827,13267,
	11219,15315,10195,14291,12243,16339,12339,10291,14387,13363,11315,15411,12851,10803,14899,13875,
	11827,15923,12595,10547,14643,13619,11571,15667,13107,11059,15155,10035,14131,12083,16179,12467,
	10419,14515,13491,11443,15539,12979,10931,15027,14003,11955,16051,12723,10675,14771,13747,11699,
	15795,13235,11187,15283,10163,14259,12211,16307,12403,10355,14451,13427,11379,15475,12915,10867,
	14963,13939,11891,15987,12659,10611,14707,13683,11635,15731,13171,11123,15219,14195,12147,16243,
	12531,10483,14579,13555,11507,15603,13043,10995,15091,14067,12019,16115,12787,10739,14835,13811,
	11763,15859,13299,11251,15347,14323,12275,16371,12299,14347,13323,11275,15371,12811,10763,14859,
	13835,11787,15883,12555,10507,14603,13579,11531,15627,13067,11019,15115,14091,12043,16139,12427,
	14475,13451,11403,15499,12939,10891,14987,13963,11915,16011,12683,10635,14731,13707,11659,15755,
	13195,11147,15243,14219,12171,16267,12363,14411,13387,11339,15435,12875,10827,14923,13899,11851,
	15947,12619,14667,13643,11595,15691,13131,11083,15179,14155,12107,16203,12491,14539,13515,11467,
	15563,13003,10955,15051,14027,11979,16075,12747,14795,13771,11723,15819,13259,11211,15307,14283,
	12235,16331,12331,14379,13355,11307,15403,12843,14891,13867,11819,15915,12587,14635,13611,11563,
	15659,13099,11051,15147,14123,12075,16171,12459,14507,13483,11435,15531,12971,15019,13995,11947,
	16043,12715,14763,13739,11691,15787,13227,11179,15275,14251,12203,16299,12395,14443,13419,11371,
	15467,12907,14955,13931,11883,15979,12651,14699,13675,11627,15723,13163,15211,14187,12139,16235,
	12523,14571,13547,11499,15595,13035,15083,14059,12011,16107,12779,14827,13803,11755,15851,13291,
	15339,14315,12267,16363,12315,14363,13339,15387,12827,14875,13851,11803,15899,12571,14619,13595,
	11547,15643,13083,15131,14107,12059,16155,12443,14491,13467,15515,12955,15003,13979,11931,16027,
	12699,14747,13723,11675,15771,13211,15259,14235,12187,16283,12379,14427,13403,15451,12891,14939,
	13915,11867,15963,12635,14683,13659,15707,13147,15195,14171,12123,16219,12507,14555,13531,15579,
	13019,15067,14043,11995,16091,12763,14811,13787,15835,13275,15323,14299,12251,16347,12347,14395,
	13371,15419,12859,14907,13883,15931,12603,14651,13627,15675,13115,15163,14139,12091,16187,12475,
	14523,13499,15547,12987,15035,14011,16059,12731,14779,13755,15803,13243,15291,14267,12219,16315,
	12411,14459,13435,15483,12923,14971,13947,15995,12667,14715,13691,15739,13179,15227,14203,16251,
	12539,14587,13563,15611,13051,15099,14075,16123,12795,14843,13819,15867,13307,15355,14331,16379,
	14343,13319,15367,12807,14855,13831,15879,12551,14599,13575,15623,13063,15111,14087,16135,14471,
	13447,15495,12935,14983,13959,16007,12679,14727,13703,15751,13191,15239,14215,16263,14407,13383,
	15431,12871,14919,13895,15943,14663,13639,15687,13127,15175,14151,16199,14535,13511,15559,12999,
	15047,14023,16071,14791,13767,15815,13255,15303,14279,16327,14375,13351,15399,14887,13863,15911,
	14631,13607,15655,13095,15143,14119,16167,14503,13479,15527,15015,13991,16039,14759,13735,15783,
	13223,15271,14247,16295,14439,13415,15463,14951,13927,15975,14695,13671,15719,15207,14183,16231,
	14567,13543,15591,15079,14055,16103,14823,13799,15847,15335,14311,16359,14359,15383,14871,13847,
	15895,14615,13591,15639,15127,14103,16151,14487,15511,14999,13975,16023,14743,13719,15767,15255,
	14231,16279,14423,15447,14935,13911,15959,14679,15703,15191,14167,16215,14551,15575,15063,14039,
	16087,14807,15831,15319,14295,16343,14391,15415,14903,15927,14647,15671,15159,14135,16183,14519,
	15543,15031,16055,14775,15799,15287,14263,16311,14455,15479,14967,15991,14711,15735,15223,16247,
	14583,15607,15095,16119,14839,15863,15351,16375,15375,14863,15887,14607,15631,15119,16143,15503,
	14991,16015,14735,15759,15247,16271,15439,14927,15951,15695,15183,16207,15567,15055,16079,15823,
	15311,16335,15407,15919,15663,15151,16175,15535,16047,15791,15279,16303,15471,15983,15727,16239,
	15599,16111,15855,16367,15903,15647,16159,16031,15775,16287,15967,16223,16095,16351,16191,16319	};


} }
